Mongoose:将数据推送到for循环中的数组

时间:2017-04-02 18:43:39

标签: node.js mongodb

我有一个小问题,我有这个代码:

Messages.findOne({id_user: to}, function (err, toUser) {

                    //dopisujemy wiadomość w tablicy użytkownika
                    var messArray = toUser.messagesArray;
                    //przeszukujemy tablice z wiadomościami aby znaleźć odpowiedniego użytkownika
                    for(var i=0;i<messArray.length; ++i) {
                        if(messArray[i].id_converser = who) {
                            // console.log(messArray[i]);
                            toUser.messagesArray[i].messages.push({id_converser: who,message: message,date: Date()});

                            toUser.save(function (err) {
                                if(err) console.log(err);
                                console.log('Wiadomość dodana');
                            })
                            return;

                        }
                    }



            }) //end zapisujemy wiadomość w miejscu przeznaczenia

并且一切似乎都很好,在控制台中我有消息&#34; wiadomosc dodana&#34;,但是当我在数据库中检查它时,我看不到这些添加的数据,为什么。 谢谢你的回复。

2 个答案:

答案 0 :(得分:0)

要推送到实际数据库中的数组,您需要使用$push$addToSet运算符

之类的内容

答案 1 :(得分:0)

当你在JavaScript中修改对象的任何深度属性或数组属性时,你需要使用isModified方法来告诉Mongoose对象的属性被修改并在数据库中更新它。

http://mongoosejs.com/docs/api.html#document_Document-isModified

所以你需要在推送函数之后执行它:

toUser.isModified('messagesArray')