node js回调函数

时间:2014-09-24 06:08:46

标签: javascript node.js mongodb function

我是nodeJs的新手。在我的代码中,我有一个异步函数,用于从mongoDB中查找记录。

var restify = require('restify');
var mongojs = require('mongojs');

var ip_addr = '127.0.0.1';
var port    =  '8080';

var server = restify.createServer({
    name : "signapp"
});

server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(restify.CORS());

var connection_string = '127.0.0.1:27017/signapp';
var db = mongojs(connection_string, ['signapp']);

var docDetails = db.collection("SIGN_DOCUMENT_DETAILS");

var PATH = '/documents'
server.post({path : PATH  + '/:search', version: '0.0.1'}, searchDoc);

function searchDoc(req, res, next)
{
 var criteria = {};
 criteria.DOC_NAME = req.params.DOC_NAME;

  if (criteria.DOC_NAME !== '' || criteria.DOC_NAME !== null)
  {
    docDetails.find({DOC_NAME : criteria.DOC_NAME}, function(err, users){
    if( err || !users){
       console.log("No record found");
    }
    else {
        console.log('record found');
    }
    });
  }

}

在我的请求中,我传递了一个字符串参数。我正在查找记录'条件匹配时在我的控制台中响应。 但问题是我在控制台得到响应,因为找到的记录是'即使查找条件失败。我尝试了很多找到解决方案但失败了。 请告诉我我的代码出错了。非常感谢这个bug的解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:1)

改变你的状况,如

if( err){
   console.log("An error occurred");
} else if(!users || users.length==0) {
   console.log("No results found");
} else {
   console.log('record found');
}

您需要添加一个条件来检查返回的数组是否为空。

注意:

javascript empty array seems to be true and false at the same time正确解释了为什么你不应该使用if(!users)检查数组是否为空。