如何使用Mongodb的insertMany操作插入多个文档

时间:2019-12-18 05:51:20

标签: node.js mongodb promise

我是Nodejs的新手,我被分配了使用node和mongodb将多个文档插入数据库中的集合的任务。我正在创建用户的表演,然后得到该用户的所有朋友。现在,对于所有朋友,我必须在数据库中生成一个通知对象。

这是我生成通知的功能-

function generateNotification(performanceId, allFriends) {
    return new Promise((resolve, reject) => {
        var friendUserIds = []
        var performance = []
        var doc = []

        doc = allFriends.Friends.forEach(function (friend) {
            friendUserIds.push(friend.friendUserId)
            performance.push(performanceId)
        })

        notificationObj.insertMany(doc, (err, notifgenerated) => {
            if (err) {
                reject({ "Success": "0", "Message": "Some error occured" })
            } else {
                var message = { "Success": "1", "Message": "Notification(s) generated", "Notif": notifgenerated }
                resolve(message)
            }
        })
    })
}

在这里,我正在获取所有朋友用户ID,然后将其存储在数组中。当前仅插入一个对象,该对象也没有friendId或performanceId。 现在如何为每个朋友ID创建多个对象?

1 个答案:

答案 0 :(得分:1)

我的猜测是您运行的循环错误: 您必须按如下方式更改循环逻辑:

var doc = []

allFriends.Friends.forEach(function (friend) {
var obj = {};
    obj.friendId = friend.friendUserId
    obj. performanceId = performanceId;
    doc.push(obj)
})

notificationObj.insertMany(doc, (err, notifgenerated) => {
    if (err) {
        reject({ "Success": "0", "Message": "Some error occured" })
    } else {
        var message = { "Success": "1", "Message": "Notification(s) generated", "Notif": notifgenerated }
        resolve(message)
    }
})