异步.forEach迭代器数据格式化问题

Async.forEach iterator data formatting issue

本文关键字:格式化 问题 数据格式 数据 forEach 迭代器 异步      更新时间:2023-09-26

我有一个问题与Mongoose夹具加载程序,我不确定是什么错了。

当我加载我的数据根据文档,如:

var data = { User: [{name: 'Alex'}, {name: 'Bob'}] };

无法加载。探索代码,我看到在这个文件中有一个async。forEach迭代器,它似乎没有被触发。创建一个简单的文件来测试,我仍然不能让它工作,因为它应该。显然控制台应该打印"User",但它没有。有人能解释一下问题是什么吗?请注意,虽然我已经表达了关于异步的问题,但最终我试图让猫鼬加载器工作,所以我需要留在它们的代码结构内。

var async = require('async');
var data = { User: [{name: 'Alex'}, {name: 'Bob'}] };
var iterator = function(modelName, next){
  // not working
  console.log(modelName);
  next();
};
async.forEach(data, iterator, function() { });

NPM库中的pow-mongoose-fixtures模块包含一个bug(请参阅bug报告)。

您的代码包含相同的错误:

async.forEach(data, ...)

forEach()操作数组,但data是对象。在模块的情况下,通过使用Object.keys()来获得键数组来修复它。你也可以用它:

async.forEach(Object.keys(data), ...);

要使mongoose-fixtures工作,请安装GitHub版本:

npm install git://github.com/powmedia/mongoose-fixtures.git

你也需要对你的代码做一些改变:

var fixtures = require('mongoose-fixtures'); // renamed from 'pow-mongoose-fixtures'
var client   = mongoose.connect(...);
...
fixtures.load(data, client); // need to pass the client object