解析javascript for循环,创建多个没有重复的对象

时间:2016-03-07 22:06:17

标签: javascript node.js parse-platform

我在Javascript中遇到Parse问题。我只是试图遍历我在数组中的对象列表。如果imageURL与Parse中的匹配,则不执行任何操作。如果它们不是数组中的imageURL,则在Parse中,然后将该行添加到Parse。

我认为我的问题是同步性。它目前将同一行(同名,imageURL和fbURL)多次保存到Parse。基本上保存一行,重复70次。

 for (var i = 0; i < listobjects.length; i++) {

      objName = listobjects[i]["name"]
      objImageURL = listobjects[i]["imageURL"]
      objfbURL = listobjects[i]["fbURL"]

      console.log("NAME: " + listobjects[i]["name"])

      // Check if record is in Parse
      var query = new Parse.Query(Recipe);
      query.equalTo("imageURL", listobjects[i]["imageURL"]);
      query.find({
        success: function(results) {
          if (results.length > 0) {
            // Do nothing. We have a result. Or maybe check if videoURL is present
            console.log("Object is already in DB.")
          } else {


            // Save the new object.
            var recipeObject = new Recipe();
            recipeObject.save({name: objName, imageURL:objImageURL, fbURL: objfbURL}, {
              success: function(object) {
                console.log("Object Saved!")
              },
              error: function(model, error) {
                console.log("Error saving object!")
              }
            });


          }
        },
        error: function(error) {
          alert("Error: " + error.code + " " + error.message);
        }
      });

    }

1 个答案:

答案 0 :(得分:1)

更改

for (var i = 0; i < listobjects.length; i++) {
  objName = listobjects[i]["name"]
  // ...
}

listobjects.forEach(function(obj) {
  // access obj.name, obj.imageURL
  // ...
});

创建一个范围,右边的对象将在find回调中使用。