将循环中的值设置为在第一个循环执行中设置的值

时间:2015-11-19 19:39:05

标签: javascript mongodb meteor collectionfs

我想要做的是将变量设置为由第一个循环执行设置的值。

作为背景信息:我正在使用CollectionFS在我的meteor应用程序中上传多个文件。现在我想将所有文件(在第一个文件旁边)设置为第一个插入文件的id的自定义字段值parent。 我通过data._id获得了ID。

我的尝试:

由于我为每个上传的文件使用循环,我认为data未定义第一个文件,所以我检查它是否有值。在这种情况下,parent也将是未定义的。对于第二个文件,data已设置,因此parent应将data._id作为其值。

但这不起作用,因为parent总是undefined

FS.Utility.eachFile(event, function (file) {
    var newFile          = new FS.File(file),
        parent           = (data) ? data._id : undefined;
        newFile.metadata = { parent: parent };

    var data = Images.insert(newFile);
    console.log(data._id); // id of the inserted file

});

1 个答案:

答案 0 :(得分:1)

每次迭代都会重新定义

data。在循环之外声明它。

var data;
FS.Utility.eachFile(event, function(file) { ... });