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

Set value in a loop to a value which is set in the first loop execution

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

作为背景信息:我正在使用 CollectionFS 在我的流星应用程序中上传多个文件。现在我想将所有文件(第一个文件除外)的自定义字段值 parent 设置为第一个插入文件的 ID。 我通过 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

});

data 在每次迭代中都被重新定义。在循环外声明它。

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