2013-04-29 58 views
0

我遇到了Mongoose夾具loader的問題,我不確定哪裏出了問題。Async.forEach迭代器數據格式問題

當我根據文檔,如加載我的數據:

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

這不加載。探索代碼我看到在這file有一個async.forEach迭代器似乎並沒有被觸發。創建一個簡單的文件來測試我仍然不能像它應該那樣工作。很明顯,控制檯應該打印'用戶',但它不會。有人可以闡明問題的可能性嗎?請注意,儘管我已經說出了關於異步的問題,但最終我試圖讓貓鼬加載器工作,所以我需要保留在他們的代碼結構中。

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

在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