2012-11-08 29 views
0

我有一個特定的代碼塊(forEach循環),我在代碼庫的每個地方都會用到,只要我有一個「item」。node.js模塊的特定代碼塊

如何將其重構爲模塊或全局函數,我可以隨時調用該函數。

這裏的背景:

Item.findById(itemid).populate('wants').exec(function(err, item){ 
     item.wants.forEach(function(person){ 
      person.avatar = gravatar.url(person.email, {size: 80, default: 'mm' }); 
     }); 

     //do some more stuff with item 
}); 

我想,我有一個「項目」對象重新使用在其他地方這個forEach循環。我在想我傳入物品對象並再次返回。

item.wants.forEach(function(person){ 
     person.avatar = gravatar.url(person.email, {size: 80, default: 'mm' }); 
    }); 

喜歡的東西:

var myLib = require('./lib/myLib'); 
... 
item = myLib.doStuff(item); 

回答

0

./lib/myLib.js文件應該是這樣的:

module.exports.doStuff = function(item) { 
    item.wants.forEach(function(person){ 
     person.avatar = gravatar.url(person.email, {size: 80, default: 'mm' }); 
    }); 
    return item; 
} 

然後,您可以要求和使用像您介紹了已經:

var myLib = require('./lib/myLib'); 
item = myLib.doStuff(item); 
+0

謝謝,我只是試過這個,但是因爲它是一個貓鼬的對象,有沒有被允許覆蓋它的特殊之處。重新賦值會導致其他屬性消失'item = myLib.doStuff(item);'我通過這樣做了:'myLib.doStuff(item)' - 我猜一切都是引用而不是副本。不完全確定這是爲什麼起作用,但確實如此。 – chovy