使用 mongojs 在节点中区分失败

Distinct in node fails using mongojs

我对节点和 mongodb 很陌生,但我正在尝试为监控应用程序编写一个简单的 API。我可以通过 /aps 调用列出所有 ap,但是 /locations 抛出一个:

process.nextTick(function() { throw err; });
                              ^

TypeError: cb is not a function

我有一个具有以下架构的集合:

ap = {
"name": apname,
"details": [{
    "apmodel": apmodel,
    "apmac": apmac,
    "apipadd": apipadd,
    "apclientcount": apclientcount,
    "aplocation": aplocation
    }]
}

// 获取所有 ap 很有用

router.get('/aps', function(req, res, next){
    db.ap_info.find().sort({name: 1}, function(err, aps){
        if(err){
            res.send(err);
        }
        res.json(aps);
    });
});

但以下不起作用:

//Get unique locations with wifi
router.get('/locations', function(req, res, next){
    db.ap_info.distinct('details.aplocation', function(err, results){
        console.log(results);
    });
});

事实是,当我在 mongodb 中执行 db.ap_info.distinct('details.aplocation') 时,它起作用了,我在这里缺少什么?

mongojs 中的 distinct 方法signature如下

db.collection.distinct(field, query, callback) 

因此您需要将查询作为函数的第二个参数包括在内:

//Get unique locations with wifi
router.get('/locations', function(req, res, next){
    db.ap_info.distinct('details.aplocation', {}, function(err, results){
        console.log(results);
    });
});