gpt4 book ai didi

javascript - 为什么使用 Mongoose 将数据存储两次?

转载 作者:行者123 更新时间:2023-11-30 19:18:00 24 4
gpt4 key购买 nike

我想在一个属性调用的情况下保存一些数据。我所做的是迭代我要存储的数据列表,然后将每个数据添加到文档的属性中。但问题是每个数据都被存储了两次。我在 github 上找到了一个有同样问题的人,他说问题出在 nodemon 上,但是我在没有 nodemon 的情况下再次运行服务器,也是同样的问题。

还在堆栈中发现一个问题,说当应用回调时它会导致保存两次,而且情况与我的不同:

Why does using mongoose callback result in saving data twice?

我尝试删除回调,但我仍然遇到同样的问题。 (我认为回调不会那样做)

这是代码:

var UserSchema = Schema({
user: {type: String},
password: {type: String},
name: {type: String},
privilege: {type: String},
cases: {type: Array}
})

var user = db.model('User', UserSchema , "users");

app.post("/addCases", function(req, res){

user.find({user: req.body.user}, async function(err, doc) {

if(err) {
console.log(err);
} else {

for (const iterator of req.body.list) {

await user.updateOne({user: req.body.user},
{ $push: {cases: iterator}}, {useFindAndModify: false}, function(err, raw) {
if(err) {
console.log(err);
} else {
console.log(value + ' <----- Value');
}
});
}
}
});
});

最佳答案

我认为您的问题可能与您没有在服务器代码中结束请求有关。在数据库中进行修改后,您应该向前端发送响应,否则它可能会尝试重复请求,最终您的端点将被调用两次。

尝试这样的事情:

app.post("/addCases", function(req, res){

user.find({user: req.body.user}, async function(err, doc) {

if(err) {
console.log(err);
} else {

for (const iterator of req.body.list) {

await user.updateOne({user: req.body.user},
{ $push: {cases: iterator}}, {useFindAndModify: false}, function(err, raw) {
if(err) {
console.log(err);
} else {
console.log(value + ' <----- Value');
}
});
}
}
// New code
res.json({ ok: true });
});
});

关于javascript - 为什么使用 Mongoose 将数据存储两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57790666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com