【问题标题】:mongodb: cannot insertMany to MongoDB Atlas server using google cloud functionsmongodb:无法使用谷歌云功能向 MongoDB Atlas 服务器插入许多
【发布时间】:2019-06-29 23:15:53
【问题描述】:

我希望通过移动 api 调用将数据存储到 Mongodb。我正在使用谷歌云功能将数据从移动客户端发送到 MongoDB Atlas。我尝试使用以下代码,但它似乎忽略了newData 数组,没有发送任何内容,MongoDB Db 仍然为空。

以下是目前的解决方案:

    let newData = {
           transId: trans['trans_id'] ? trans['trans_id'] : '',
           sender: trans['ledger_to_id'] ? trans['ledger_to_id'] : '',
           receiver: trans['ledger_from_id'] ? trans['ledger_from_id'] : '',
           createdAt: trans['created_at'] ? trans['created_at'] : '',
           amount: trans['cost'] ? trans['cost'] : ''
         };
    db.collection('test').insertMany(newData)
    db.close();

我试过db.collection('test').bulkWrite(newData)

完整功能:

index.js

    exports.costLedger = functions.https.onCall(async(data, context) => {
      var allTrans = await get(`v1/customer/orders`);
      MongoClient.connect(CONNECTION_URL, function(err, client) {
        assert.equal(null, err);
        console.log("Connected successfully to server");
        const db = client.db(DATABASE_NAME);
        for (var transIndex in allTrans) {
          var trans = allTrans[transIndex];
          console.log(trans['trans_id']);
          let newData = {
            transId: trans['trans_id'] ? trans['trans_id'] : '',
            sender: trans['ledger_to_id'] ? trans['ledger_to_id'] : '',
            receiver: trans['ledger_from_id'] ? trans['ledger_from_id'] : '',
            createdAt: trans['created_at'] ? trans['created_at'] : '',
            amount: trans['cost'] ? trans['cost'] : ''
          };
          db.collection('test').insertMany(newData)
          db.close();
        }
      });
      return allTrans;
    })

编辑:函数能够连接到数据库。

【问题讨论】:

    标签: javascript arrays node.js mongodb google-cloud-functions


    【解决方案1】:

    docs

    document要插入到集合中的文档数组。

    只需在对象周围添加一对方括号:

    let newData = [{
        transId: trans['trans_id'] ? trans['trans_id'] : '',
        sender: trans['ledger_to_id'] ? trans['ledger_to_id'] : '',
        receiver: trans['ledger_from_id'] ? trans['ledger_from_id'] : '',
        createdAt: trans['created_at'] ? trans['created_at'] : '',
        amount: trans['cost'] ? trans['cost'] : ''
    }];
    

    【讨论】:

    • @JackBashford....我收到了错误:> at /Users/apple/Project/mongodb-trans-data/functions/node_modules/mongodb/lib/utils.js:433:24 > (node:3921) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 406) > (node:3921) UnhandledPromiseRejectionWarning: MongoError: topology was destroyed
    • 感谢 Jack,已成功解决。我之前已经修复了这个错误问题,只是对代码进行了简单的重新排列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2020-11-14
    • 2019-10-28
    • 2019-12-25
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多