exports.fakeAccounts = function (Account, callback) {
async.map([{
username: 'Jehoon',
provider: 'farcebook'
}, {
username: 'C3P0',
provider: 'farcebook'
}], function (opts, cb) {
Account.upsert(opts, cb);
}, callback);
};
工作正常,但
exports.fakeAccounts = function (Account, callback) {
async.map([{
username: 'Jehoon',
provider: 'farcebook'
}, {
username: 'C3P0',
provider: 'farcebook'
}], Account.upsert, callback);
};
抛出错误,说帐户未定义。
我原以为,因为Account.upsert
采用相同的参数,所以它会起作用。我现在已经解决了,但我想知道我在这里缺少什么。
答案 0 :(得分:1)
这不起作用,因为Account.upsert
方法使用this
值和JavaScript has dynamic this
。
您可以尝试将其明确绑定到此值:
exports.fakeAccounts = function (Account, callback) {
async.map([{
username: 'Jehoon',
provider: 'farcebook'
}, {
username: 'C3P0',
provider: 'farcebook'
}], Account.upsert.bind(Account), callback);
};