javascript - mongodb:无法使用谷歌云功能将Many插入到MongoDB Atlas服务器

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

我希望通过移动 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;
    })

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

最佳答案

请参阅docs :

document An array of documents to insert into the collection.

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

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'] : ''
}];

关于javascript - mongodb:无法使用谷歌云功能将Many插入到MongoDB Atlas服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821436/

相关文章:

node.js - 如何从 nodejs 脚本安装 npm 包?

c++ - 如果大小未知,如何通过引用将一维数组作为参数传递?

java - 找到二维数组中的最小值

node.js - NodeJs 中的静态文件夹

javascript - 添加阴影 Chart.js

C 中的日历与最后一行的总和

javascript - 如何使用第二个 Node 服务器运行独立的 express.js 应用程序?

javascript - 请求用户允许启用网络推送通知的正确方法是什么?

javascript - 函数不计算格式化数字的值

javascript - Angular 1.4.8 错误 : [$injector:modulerr]