无法使用compose for mongodb使用insertMany插入记录

时间:2017-06-07 05:14:22

标签: node.js mongodb compose

我正在使用nodejs连接并在compong for mongodb中插入记录。当我尝试使用insertMany并保存记录时,我收到以下错误。

  

(node:10140)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):MongoError:写入conf   ig服务器的批量大小必须为1,找到23

以下是我的代码段:

MongoClient.connect(url, function(err, db) {

    if(err){
    console.log('Error is ' + err);
    }
    else{
     console.log("Connected correctly to server");
    try {
    var col = db.collection('offshift');
        col.insertMany(result).then(function(result){
         res.json({message:'Data saved succesfully!',error_code:0, data: result});
       });

    } catch (e) {
       console.log(e);
    }
     db.close();
    }
});

2 个答案:

答案 0 :(得分:1)

我试图在Admin中插入记录。然后我更改了DB名称并创建了具有新DB读/写权限的用户。使用正确的DB名称和新创建的用户更改了我的连接字符串以进行访问。这解决了这个问题。

您可以参考以下链接了解更多详情: https://www.compose.com/articles/avoid-storing-data-inside-admin-when-using-mongodb/

答案 1 :(得分:0)

如果您不使用承诺无法使用.then()。因此,您可以使用.then()功能代替callback。可以尝试下面的代码

var col = db.collection('offshift');
  col.insertMany(result, function(error, result){
       if(error){
          console.log('Error is on insert', error);
        } else
           res.json({message:'Data saved succesfully!',error_code:0, data: result});
});

您可以使用返回承诺的.exec(),然后可以使用.then()

var col = db.collection('offshift');
        col.insertMany(result).exec().then(.....)