0

我对 Nodejs 很陌生,我试图通过提交代码并交叉检查记录以查看它是否存在来在我的 db(mongo) 中找到一条记录。

我不太清楚如何解决这个问题以获得最终结果,说明“有代码,请继续”和“没有代码”。

到目前为止,这是我摆弄的结果:

userProvider.js:

UserProvider.prototype.findByCode = function(code, callback) {
    this.getCollection(function(error, user_collection) {
        user_collection.findOne({code: code}, function(error, result) {
            callback(error, result)
        });
    });
}

属于 userProvider.js 的 get 集合:

UserProvider.prototype.getCollection= function(callback) {
  this.db.collection('users', function(error, user_collection) {
    if( error ) callback(error);
    else callback(null, user_collection);
  });
};

应用程序.js:

app.post('/game/code', function(req, res) {
    if (req.param('code')) {
        userProvider.findByCode(req.param('code'), function(error, result) {
            console.log(error);
            console.log(result);
        });
    }
});

以及提交代码的翡翠表格:

extends layout

block content
    h1= "Gimme a code"
    div
        form( method="post")
            div
                div
                    span.label code :
                    input(type="text", name="code", id="code")
                div
                    input(type="submit", value="Verbind")

控制台记录 param('code') 会生成代码。所以我很确定一个是坚实的。那么为什么会返回一个 null 呢?

4

1 回答 1

0

从问题中,您没有说返回“null”的位置。我也是 nodejs 的新手,但是我在您的代码中注意到:

app.post('/game/code', function(req, res) {
    if (req.param('code')) {
        userProvider.findByCode(req.param('code'), function(error, result) {
            console.log(error);
            console.log(result);
        });
    }
});

而且您没有调用“ res”对象。你应该尝试这样的事情:

app.post('/game/code', function(req, res) {
    if (req.param('code')) {
        userProvider.findByCode(req.param('code'), function(error, result) {
            if(error) 
              res.send(404, 'There is no code');
            else {
              console.log(result);
              res.send('There is a code:'+result);
            }
        });
    }
});

查看http://expressjs.com/api.html#res.status了解您对 res 对象所做的各种事情

于 2013-06-01T18:46:39.443 回答