Javascript 为什么使用mongoose将数据存储两次?

Javascript 为什么使用mongoose将数据存储两次?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我想在属性调用案例中保存大量数据。我所做的是迭代要存储的数据列表,然后将每个数据添加到文档的属性中。但问题是,每个数据存储两次。我在github发现一个人有同样的问题,他说问题出在nodemon身上,但我在没有nodemon的情况下再次运行服务器,也是同样的问题 在堆栈中还发现一个问题,即当应用回调时,会导致保存两次,这种情况与我的情况也不同: 我尝试删除回调,但仍然存在相同的问题。(我不认为回电话会这样做) 代码如下: var UserSchema = Schema({ user:

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

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

我尝试删除回调,但仍然存在相同的问题。(我不认为回电话会这样做)

代码如下:

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+’您是否检查过您没有发出两次请求?谢谢,我不知道不将响应发送到前端会导致该问题。非常感谢!!