【发布时间】:2017-12-17 17:46:46
【问题描述】:
我想同时显示聊天机器人和 Facebook 数据。如何显示它?因为当我尝试在浏览器中运行但它没有出现任何内容时。我试图在 stackoverflow 上查找它,但没有得到正确的参考
route.js
app.get('/cpanel/facebook', function(req, res) {
if (req.session.user == null) {
res.redirect('/cpanel/login');
} else {
CB.getAllRecords( function(e, chatbot) {
res.render('cpanel/facebook', { udata : req.session.user, chatbot : chatbot });
});
FBM.getAllRecords( function(e, facebook) {
res.render('cpanel/facebook', { udata : req.session.user, facebook : facebook });
});
}
});
facebook.js
var facebook = db.collection('facebook');
exports.addNewFacebook = function(newData, callback) {
facebook.findOne({accesstoken:newData.accesstoken}, function(e, o) {
if (o) {
callback('accesstoken-taken');
} else {
facebook.insert(newData, {safe: true}, callback);
}
});
}
exports.getAllRecords = function(callback) {
facebook.find().toArray(
function(e, res) {
if (e) callback(e)
else callback(null, res)
}
);
}
聊天机器人.js
var chatbot = db.collection('chatbot');
exports.addNewChatBot = function(newData, callback) {
chatbot.insert(newData, {safe: true}, callback);
}
exports.getAllRecords = function(callback) {
chatbot.find().toArray(
function(e, res) {
if (e) callback(e)
else callback(null, res)
}
);
}
【问题讨论】:
-
简短回答。对数据库使用 promises 接口而不是普通的回调接口,然后使用
Promise.all()跟踪两个请求何时完成。您将希望切换到管理异步操作的 Promise,因为使用 Promise 时管理多个异步操作更简单。 -
你有示例代码吗?