如何从函数中访问数据(node.js)

时间:2017-10-24 17:53:15

标签: javascript node.js mongodb

有人能用我的例子解释我如何使用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();
              });
            });  
    }

};

0 个答案:

没有答案