把手帮助与猫鼬

时间:2015-05-13 01:16:02

标签: node.js

我正在尝试显示来自猫鼬数据库的数据。

这是我的代码:

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函数没有完成。如何在不发生这种情况的情况下从数据库中显示数据?

2 个答案:

答案 0 :(得分:0)

传递给代码中find()的回调函数以异步方式运行。因此,您无法使用returndata的值发送回调用函数。相反,您需要在内部回调函数中对result(以及扩展名data)执行任何操作。

如果您需要通知外部函数已设置data的值,则可以使用EventEmitter发出事件。

答案 1 :(得分:0)

您不能在把手助手中使用异步代码,因为解析模板是同步过程。在致电~

之前,您需要准备好所有数据

正如@Trott所说,你不能按照你预期的方式填充Handlebars.compile()。您可能会看到here关于在手柄中支持异步助手的讨论。