mongojs实现非阻塞查询

时间:2012-11-18 15:34:53

标签: javascript node.js callback asynchronous

我知道这一定是一个非常愚蠢的问题,但我无法弄清楚如何让它发挥作用。我正在学习node.js和mongojs,这是我的问题:

这是我的server.js

server.get("/", function(request, response) {
  if (user.whatever()) {
    return response.send('true');
  } else {
    return response.send('false');
  }
});

这是我的user.js

exports.whatever = function(request, response) {
  return db.tableName.findOne({
    fieldName: null
  }, function(error, record) {
    if (record === null) {
      return false;
    } else {
      return true;
    }
  });
};

该函数返回“undefined”。我想这是阻塞代码的问题,但不知道如何转换它。请帮忙!

1 个答案:

答案 0 :(得分:1)

你应该这样做:

server.js

server.get("/",user.whatever, function(request, response) {
  if (request.user)
    response.send('true');
  else
    response.send('false');
});

user.js的

exports.whatever = function(request, response, next) {
  db.tableName.findOne({ fieldName: null }, function(error, record) {
    if (record === null) request.user = false;
    else request.user = true;
    next();
  });
};