有人能用我的例子解释我如何使用nodejs吗?它让我疯狂。我不想总是调用相同的函数,因为我实现了我想要的东西,但它是愚蠢而肮脏的解决方案。
var self = this;
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection("myUsers").findOne({alexaUserID:userID}, function(err, result) {
if (err || result==null){
self.emit(':ask',
SpeechOutputUtils.pickRandom(self.t('WELCOME'))
);
}
else {
console.log(result);
self.emit(':ask',
SpeechOutputUtils.pickRandom(self.t('WELCOME_OK', result.userName))
);
}
db.close();
});
});
我希望从函数
获取我的用户名(或我的mongodb中的任何内容)我在我的主文件index.js
const DbConn = require('../utils/db.utils');
var userID = this.event.session.user.userId;
var myName = "";
myName = DbConn.dbFind("myUsers", userID);
console.log(myName);
我应该看到安娜,但我总是看到未定义的
db.utils文件:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://*******/heroku_06r";
module.exports = {
dbFind: function(collection, userID) {
MongoClient.connect(url, function(err, db) {
if (err) throw err;
db.collection(collection).findOne({alexaUserID:userID}, function(err, result) {
if (err || result==null){
return null;
}
else {
return result.userName;
}
db.close();
});
});
}
};