使用nodejs异步保存到dynamodb

时间:2016-10-14 20:01:56

标签: javascript node.js amazon-dynamodb

所以我有以下功能但是当我只调用保存组件时,最后一个条目实际上是保存到数据库。

var shortid = require('shortid'),
 dynamodb = new AWS.DynamoDB();


    setupComponents: function(args) {
                    console.log(args)
                      if (args["componentName"] &&  args["apiKey"] !== null){
                          var apiKey = args["apiKey"]
                          for (i = 0; i < args["componentName"].length; i++) {
                            console.log(args["componentName"][i]);
                            var componentName = args["componentName"][i];
                            saveComponent(componentName, apiKey);
                          }
                      } else {
                          console.log("NULL FOUND");
                      }
                  },

function saveComponent(args, apiKey) {
    var o = new SoftwareComponent({
      _id: shortid.generate,
      componentName: args,
      versionName: "default",
      stepName: "default",
      timeInMS: "default",
      stepResult: "default",
      notes: "default",
      apiKey: apiKey
    });
    console.log(o)
    o.save();
}

如何保存以便异步调用,以便所有条目都保存在数据库中?

1 个答案:

答案 0 :(得分:1)

看起来像javascript闭包的问题。尝试。

setupComponents: function (args) {
    console.log(args);
    if (args["componentName"] && args["apiKey"] !== null) {
        var apiKey = args["apiKey"];
        var arr = args["componentName"];
        arr.forEach(function(item, index){
            console.log(item);
            saveComponent(item, apiKey);
        });
    } else {
        console.log("NULL FOUND");
    }
}