【问题标题】:Cannot read data from subcollection无法从子集合中读取数据
【发布时间】:2015-02-11 04:58:51
【问题描述】:

我想获取文档的特定子集合的 status_code,但我在控制台中未定义。

这是我的代码:

router.route('/user/:_id/host/:_id/checkStatus/').post(function(req, res) {
var finalList = [];
Host.findOne({
    _id : req.params._id
}, function(err, host) {
    if (err) {
        res.send(err);
    } else {
        var count = host.joinees.length;
        var limits = [];
        for (var i = 0; i < count; i++) {
            limits.push(i);
        }
        async.eachSeries(limits, function(i, callback) {
            var ID = host.joinees[i].userid;
            console.log(ID);
            console.log(req.body.userid);
            if (ID === req.body.userid) {
                 finalList[0] = host.joinees[i].status_code;
                    console.log(finalList+"HHKHJKHKH");
            }
            console.log(finalList+"aaaaaa");
            callback();
        }, function() {
            console.log(finalList + '-------------');
            res.json({
                requestStatus : 1,
                message : "success! Status Code Retrived",
                joinRequestStatus : finalList
            });
        });
    }
});

});

【问题讨论】:

  • 每个部分你都成功了吗?我的意思是host 找到了吗?也许你在路上的某个地方失败了。
  • @Pio:我调试了但不幸的是控件没有进入 if 语句。我正在编辑代码。请检查。
  • 但是您确实记录了IDreq.body.userid?或者什么都没有记录/空行(这意味着你没有找到任何东西?你记录了host吗?
  • @Pio : 值已记录,但在 if 语句中不匹配
  • 我的回答解决了你的问题吗?如果是,请接受它作为正确答案。

标签: node.js mongodb mongoose nosql


【解决方案1】:

我认为它们在if 语句中不匹配,因为它们属于不同类型。我的猜测是其中一个是String(很可能是您的查询结果),另一个是Number

您可以通过两种方式解决这个问题:要么只使用等值运算符 (==) 而不是等值相等类型运算符 (===),要么您可以将查询结果转换为 Object,例如,如果您在查询对象上使用mongoose 调用lean(),然后处理结果。

【讨论】:

    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2021-11-15
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多