上一个不存在时无法创建新架构
Unable to Create New Schema when Previous does not exists
这是我在 Node JS 中为费用跟踪应用程序插入新数据的逻辑。
我的查询是函数 createNewData() 永远不会执行。如果存在特定日期的先前 UserData 架构,则此代码可以毫无问题地更新它。
但是如果 UserData Schema 不存在,代码将无法创建新的。
我应该使用 UserData.findOne 以外的东西吗?我已经使用了 findOneAndUpdate() 和 exists() 但没有任何效果。我是猫鼬的新手,请帮助
app.post("/insert",(req,res)=>{
const username = req.cookies.username;
const Date = now.toLocaleDateString("en-Uk");
const Amount = req.body.value;
function createNewData(){
const userData = new UserData({
email:username,
date:Date,
amount: Amount
});
userData.save((err)=>{
if(err){
console.log(err);
}else{
console.log('newdatasaved');
res.redirect("/")
}
});
User.findOneAndUpdate({email:username},{$push:{data:userData._id}},(err)=>{
if(err){
console.log('cant push');
}else{
console.log('pushed data');
}
});
}
UserData.findOne({email:username,date:Date},(err,found)=>{
if(err){
createNewData();
console.log('cant find on particular date new created');
}else{
if(found){
let a = Number(found.amount);
let b = Number(Amount)+a;
UserData.findOneAndUpdate({email:username,date:Date},{$set:{amount:b}});
console.log('updated in existing');
res.redirect("/");
}
}
})
})
创建一个单独的变量
let xyz = User.findOne({..conditions}).exec();
然后使用 if
, else
语句帮助
这是我在 Node JS 中为费用跟踪应用程序插入新数据的逻辑。
我的查询是函数 createNewData() 永远不会执行。如果存在特定日期的先前 UserData 架构,则此代码可以毫无问题地更新它。
但是如果 UserData Schema 不存在,代码将无法创建新的。
我应该使用 UserData.findOne 以外的东西吗?我已经使用了 findOneAndUpdate() 和 exists() 但没有任何效果。我是猫鼬的新手,请帮助
app.post("/insert",(req,res)=>{
const username = req.cookies.username;
const Date = now.toLocaleDateString("en-Uk");
const Amount = req.body.value;
function createNewData(){
const userData = new UserData({
email:username,
date:Date,
amount: Amount
});
userData.save((err)=>{
if(err){
console.log(err);
}else{
console.log('newdatasaved');
res.redirect("/")
}
});
User.findOneAndUpdate({email:username},{$push:{data:userData._id}},(err)=>{
if(err){
console.log('cant push');
}else{
console.log('pushed data');
}
});
}
UserData.findOne({email:username,date:Date},(err,found)=>{
if(err){
createNewData();
console.log('cant find on particular date new created');
}else{
if(found){
let a = Number(found.amount);
let b = Number(Amount)+a;
UserData.findOneAndUpdate({email:username,date:Date},{$set:{amount:b}});
console.log('updated in existing');
res.redirect("/");
}
}
})
})
创建一个单独的变量
let xyz = User.findOne({..conditions}).exec();
然后使用 if
, else
语句帮助