我正在尝试显示来自猫鼬数据库的数据。
这是我的代码:
Handlebars.registerHelper('SafeUrls', function() {
var data = '';
UrlInfo.find({}, function(err, result){
if(err){ }
else{
for(var v = 0; v < result.length; v++)
{
data += '<span>' +result[v].URL + '</span><br>';
}
}
});
return data;
});
它总是返回空,因为在返回发生之前find函数没有完成。如何在不发生这种情况的情况下从数据库中显示数据?
答案 0 :(得分:0)
传递给代码中find()
的回调函数以异步方式运行。因此,您无法使用return
将data
的值发送回调用函数。相反,您需要在内部回调函数中对result
(以及扩展名data
)执行任何操作。
如果您需要通知外部函数已设置data
的值,则可以使用EventEmitter发出事件。
答案 1 :(得分:0)
您不能在把手助手中使用异步代码,因为解析模板是同步过程。在致电~
正如@Trott所说,你不能按照你预期的方式填充Handlebars.compile()
。您可能会看到here关于在手柄中支持异步助手的讨论。