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

时间:2013-04-29 07:07:51

标签: javascript node.js mongoose

我遇到了Mongoose灯具loader的问题,我不确定是什么问题。

根据以下文档加载数据时:

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

它没有加载。探索代码我看到在这个file中有一个async.forEach迭代器似乎没有被触发。创建一个简单的文件进行测试我仍然无法让它按原样运行。显然,控制台应该打印“用户”但不是。有人可以说明问题可能是什么吗?请注意,虽然我已经提到了关于异步的问题,但最终我试图让mongoose加载器工作,所以我需要保持其代码结构。

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() { });

1 个答案:

答案 0 :(得分:1)

NPM存储库中的pow-mongoose-fixtures模块包含一个错误(请参阅bug report)。

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

async.forEach(data, ...)

forEach()对数组进行操作,但data是一个对象。如果是模块,it was fixed使用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