【问题标题】:Node.js won't return anything? [duplicate]Node.js 不会返回任何东西? [复制]
【发布时间】:2017-01-04 04:19:18
【问题描述】:

为什么usernametoid 函数不返回任何东西?我通过安慰它知道它存在,但它不会存储在otherplayerid 变量中?为什么?

我的应用程序:(调用 post api kill)

var userFunc   = require('../factory/user_factory.js');

    app.post('/api/kill', function (req, res) {

        var username = "signature";//req.query.username;

        var otherplayerid = userFunc.usernametoid(username);
 if (!(otherplayerid)) {
                console.log("other player is acually " + otherplayerid);
                result.push("denne brukeren finnes ikke! " + otherplayerid);

            } else {

}
});

和我的用户工厂:

var articles = require('../controllers/articles.server.controller'),
    path = require('path'),
    mongoose = require('mongoose'),
    Article = mongoose.model('Article'),
    Users = mongoose.model('User'),
    errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller'));



exports.usernametoid = usernametoid;





    function usernametoid(id) {

        var query = Users.findOne( { username : id } );
        query.exec(function(err, datas) {
console.log(datas._id);
            return datas._id;
        });
    }

控制台:

 other player is acually undefined
    57c1c0f3b6b20c011242bf22

【问题讨论】:

  • 你的控制台输出是什么样的?
  • 您正在尝试从异步操作返回信息。你不能那样做。
  • @jfriend00 我该怎么做?
  • 我将您的问题标记为另一篇解释各种选项的帖子的副本。

标签: javascript node.js mean-stack var


【解决方案1】:

您需要阅读有关异步调用的信息。这是数据库请求。简单的修复是回调:

function something(data, callback) {
    return callback('some data from db')
}

something('x', function(cb) {
    console.log(cb)
}

最好返回两个值(错误、回调)。但您可以稍后再阅读。 也有承诺。您可以阅读有关它们 insted 回调的信息,但建议您同时了解它们。

【讨论】:

  • 我们通常应该尽量避免回答有数百个相同基本问题重复的问题,因为它只会污染 stackoverflow 搜索。这是其中一种情况。
  • @jfriend00 明白先生。下次我会记住这一点的。
  • 我确实有一个关于异步的问题@jfriend00
  • @maria - 如果你已经彻底研究了你的答案被标记为重复,并且如果它又快又短,你可以把它放在给我的评论中(在你的问题下,而不是在这个答案)。如果它不是快速和简短,并且如果您已经搜索并且您认为您的问题没有在 stackoverflow 上的其他答案中得到回答,那么您可以发布一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多