Javascript 为什么使用mongoose将数据存储两次?
我想在属性调用案例中保存大量数据。我所做的是迭代要存储的数据列表,然后将每个数据添加到文档的属性中。但问题是,每个数据存储两次。我在github发现一个人有同样的问题,他说问题出在nodemon身上,但我在没有nodemon的情况下再次运行服务器,也是同样的问题 在堆栈中还发现一个问题,即当应用回调时,会导致保存两次,这种情况与我的情况也不同: 我尝试删除回调,但仍然存在相同的问题。(我不认为回电话会这样做) 代码如下:Javascript 为什么使用mongoose将数据存储两次?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我想在属性调用案例中保存大量数据。我所做的是迭代要存储的数据列表,然后将每个数据添加到文档的属性中。但问题是,每个数据存储两次。我在github发现一个人有同样的问题,他说问题出在nodemon身上,但我在没有nodemon的情况下再次运行服务器,也是同样的问题 在堆栈中还发现一个问题,即当应用回调时,会导致保存两次,这种情况与我的情况也不同: 我尝试删除回调,但仍然存在相同的问题。(我不认为回电话会这样做) 代码如下: var UserSchema = Schema({ user:
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');
}
});
}
}
});
});
var UserSchema=Schema({
用户:{type:String},
密码:{type:String},
名称:{type:String},
特权:{type:String},
案例:{type:Array}
})
var user=db.model('user',UserSchema,“users”);
app.post(“/addCases”),功能(请求、回复){
user.find({user:req.body.user},异步函数(err,doc){
如果(错误){
控制台日志(err);
}否则{
for(req.body.list的常量迭代器){
等待user.updateOne({user:req.body.user},
{$push:{cases:iterator}},{useFindAndModify:false},函数(err,raw){
如果(错误){
控制台日志(err);
}否则{
console.log(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 });
});
});
app.post(“/addCases”),函数(req,res){
user.find({user:req.body.user},异步函数(err,doc){
如果(错误){
控制台日志(err);
}否则{
for(req.body.list的常量迭代器){
等待user.updateOne({user:req.body.user},
{$push:{cases:iterator}},{useFindAndModify:false},函数(err,raw){
如果(错误){
控制台日志(err);
}否则{
console.log(value+’您是否检查过您没有发出两次请求?谢谢,我不知道不将响应发送到前端会导致该问题。非常感谢!!