2017-06-22 19 views
0

在下面的Meteor服務器代碼中,它編譯時打印出從myCol獲取的顏色。但是顏色被mongo shell命令改變了,並且代碼被再次激發,它無法打印出新的顏色。
如何修復它以便console.log(color)打印「新」顏色? THXJavascript模塊以公開方法引用收集文檔

///////sever/food.js 

let Milk = function() { 
    let color = Meteor.myCol.findOne({food:'milk'}).color; 
    return function() { 
    console.log (color); 
    } 
} 

export const Food = { 
    milk: new Milk() 
} 


//////server/buy.js 
import {Food} from './food'; 
Food.milk(); // expecting to get the color saved in the collection at the time of calling 

回答

0

功能牛奶是返回,打印的顏色的函數的局部變量。當從buy.js調用牛奶函數時,您只會調用日誌,而不是再次從db中讀取文檔,因此它具有舊值。

如果你想要做的就是牛奶的顏色和記錄它,我會寫這樣的(ES6)牛奶功能,food.js:

const milkColor =() => { 
    let milk = myCol.findOne({food: 'milk'}); 
    const color = milk?milk.color:undefined; 
    console.log(color); 
} 

export const Food = { 
    milk: milkColor 
} 

那麼,在買。 js:

import {Food} from './food'; 
Food.milkColor();