我有 TopPlayer 模型:
module.exports = {
attributes: {
league_id: 'number',
playerid: 'number',
playerimage: 'url',
teamimage:'url',
teamname:'string',
season: 'string',
player: 'string',
assets: 'number',
goals: 'number',
toJSON: function() {
var obj = this.toObject();
Player.findOne({gs_id:obj.playerid}).done(function(err, player) {
obj.playerImage = player.image;
console(player.image);// everything is ok
return obj; // but this is returning null
});
}
}
};
和 toJSON 始终返回 null 对象。当我调试时,播放器已创建,但回调内的 obj 实例为空,我无法返回他:( 我该如何解决这样的问题?
最佳答案
在您的情况下,toJSON
不返回任何内容,因为您实际上没有从中返回任何内容。看我的评论:
toJSON: function() {
var obj = this.toObject();
Player.findOne({gs_id:obj.playerid}).done(function(err, player) {
obj.playerImage = player.image;
console(player.image);// everything is ok
return obj; // but this is returning null
});
// You must return a value here:
return ojb;
}
您不能以异步方式编写toJSON
方法。它必须返回一个值。此方法适用于简单的任务,例如过滤输出。如果您想做复杂的事情,例如数据查询,请考虑在不同的地方进行。
要澄清为什么你所做的事情是不可能的,请参阅 SO 上的许多类似问题之一,例如:How to return value from an asynchronous callback function?
关于node.js - 如果我们从回调中返回 toJSON 中的对象,为什么它是 null ? (吃水线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757909/