【问题标题】:JavaScript and MongoDB return undefined using Find() [duplicate]JavaScript 和 MongoDB 使用 Find() 返回 undefined [重复]
【发布时间】:2017-02-18 13:41:14
【问题描述】:

我正在尝试使用 JavaScript 和 MongoDB 检查数据集中是否存在用户名。我希望它返回一个简单的真假陈述。我正在使用以下语法:

checkUserName = function (usernameIn) {

  User.findOne({username: usernameIn}, function(err, item) {
    if (err) throw err;
            if(item === null) {
              console.log("Does not exist")
                return false;
            }
            else {
                console.log("Username already exists.")
                return true;
            }

    });

但是,当我调用该函数时,它只返回 undefined 而不是 true 或 false 语句。

编辑:

我确实在脚本顶部调用了 var User = mongoose.model('Users') 。该函数确实正确执行了 conole.log() 操作,但是当我执行 var result = checkUserName(username) 时它只是不返回结果。

非常感谢

【问题讨论】:

  • 函数内部似乎无法访问“用户”对象。
  • 许多道歉,我称之为 var User = mongoose.model('Users');在函数的顶部。 console.log() 事件被正确触发,但函数的返回只是提供为 undefined。
  • 这是因为数据库操作是异步的。当您尝试使用函数的返回时,您将不得不使用承诺或回调来确保数据库读取立即完成。

标签: javascript mongodb mean


【解决方案1】:
Try This:

Write a callback to a function when it is called.

checkUserName = function (usernameIn,callback) {

  User.findOne({username: usernameIn}, function(err, item) {
    if (err) throw err;
            if(item === null) {
              console.log("Does not exist")
                return callback(false);
            }
            else {
                console.log("Username already exists.")
                return callback(true);
            }

    });

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 2016-05-01
    • 1970-01-01
    • 2018-04-04
    • 2022-01-23
    • 2015-03-25
    • 2020-06-05
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多