我的 Postgres 資料庫中有兩個以 users 和 card_info 命名的表。我創建了一個用于注冊新用戶的端點,并提供了一個名為 dateCreated 的欄位,如下面的代碼所示。
注冊.js
const handleRegister=(req,res,db,bcrypt,saltRounds)=>{
const {name,phno,dob,email,username,password,aadharCard}=req.body;
if(!name || !email|| !phno || !dob || !username || !password || !aadharCard){
return res.status(400).json('Wrong Form Submission');
}
const hash=bcrypt.hashSync(password,saltRounds);
const accNo=Math.floor(2E9 Math.random()*1E9);
const dateCreated=new Date().toJSON().slice(0,10);
db('users')
.insert({
username:username,
name:name,
email:email,
password:hash,
dob:dob,
phno:phno,
aadhar:aadharCard,
acc_no:accNo,
created_date:dateCreated
})
.returning('*')
.then(users=>{
res.json(users[0]);
})
.catch(err=>res.status(400).json("Unable to register"));
}
module.exports={
handleRegister:handleRegister
}
在卡片端點中,我選擇用戶創建的年份,其 ID 作為請求發送。然后我使用計算值將這些值存盤到 card_info 表中。到期日期應該比 created_year 多 4 年。表users的id是表card_info的外鍵
卡.js
const genCard=(req,res,db)=>{
const {id,cardType} =req.body;
db.select('created_date').from('users').where("id","=",id)
.then(data=>{
const createdDate=data[0].created_date.toString();
db('card_info')
.insert({
card_number:Math.floor(Math.random()*1E17),
owner_id:id,
expiration_date: createdDate.replace(parseInt(createdDate),parseInt(createdDate) 4),
cvv:Math.floor(Math.random()*1E3),
card_type:cardType
})
.returning('*')
.then(users=>{
console.log(res.json(users[0]));
})
.catch(err=>res.json(err.message))
})
.catch(err=>res.json(err));
}
module.exports={
genCard
}

這是我收到的錯誤:“插入“card_info”(“card_number”、“card_type”、“cvv”、“expiration_date”、“owner_id”)值($1、$2、$3、$4、$5)回傳 * -時區“gmt 0300”無法識別”。
我嘗試了各種日期格式化方法,但似乎沒有任何效果。如果有人對此有解決方案,請告訴我。
uj5u.com熱心網友回復:
我會避免操作代表日期的字串的所有嘗試——它只會導致眼淚并且通常不考慮邊緣情況。而是直接操縱日期。我會推薦Luxon,它提供了一個久經考驗的包裝器,Date并具有使處理日期更容易的便利功能。
// convert to DateTime object
const createdDate = DateTime.fromJSDate(data[0].created_date);
// add 3 months
const futureDate = createdDate.plus({months: 3});
// insert a date object
db('card_info').insert({
card_number:Math.floor(Math.random()*1E17),
...
created: futureDate, // or futureDate.toJSDate()
})
演示:
const {
DateTime
} = luxon;
// convert a saved date from the DB to DateTime
const dt = DateTime.fromJSDate(new Date());
// add 3 months
const futureDate = dt.plus({
months: 3
});
console.info(futureDate.toFormat('yyyy-MM-dd'), futureDate.toJSDate());
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/global/luxon.min.js"></script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326936.html
標籤:javascript 节点.js PostgreSQL 表达 knex.js
上一篇:如果通過postgres備份和恢復工具不存在創建資料庫的問題
下一篇:在PHP中顯示表格
