【问题标题】:Mean: Query related collections gives 'findOne' of undefined均值:查询相关集合给出未定义的“findOne”
【发布时间】:2016-05-15 17:01:32
【问题描述】:

我是 MEAN 的新手,我有 两个收藏用户和仪表板。 我有 相关 仪表板与用户

蒙古壳

db.users.find() -> { "_id" : ObjectId("573765e5889380a83581f421"), "firstName" : "zx", "lastName" : "zx", "username" : "zx" }

db.dashboard.find() -> { "_id" : ObjectId("573766af2affdfa8aaef44d4"), "sentenceId" : 40, "synced" : 1, "iscorrect" : "no", "user_id" : ObjectId( “573765e5889380a83581f421”)}

我们可以观察到用户与仪表板相关

db.dashboard.findOne({"user_id" : ObjectId("573765e5889380a83581f421")})

得到的结果是

{ "_id" : ObjectId("573766af2affdfa8aaef44d4"), "sentenceId" : 40, “同步”:1,“不正确”:“否”,“user_id”: ObjectId("573765e5889380a83581f421") }

问题从这里开始

我尝试在express js中做如下

function getById(_id) {
    var deferred = Q.defer();

    db.dashboard.findOne({user_id : _id}, function (err, user) {
        console.log(user)

        if (err) deferred.reject(err);

        if (user) {
            // return user (without hashed password)
            deferred.resolve(_.omit(user, 'hash'));
        } else {
            // user not found
            deferred.resolve();
        }
    });

    return deferred.promise;
}

错误消息TypeError: Cannot read property 'findOne' of undefined

我正在使用 mongoskin,但我不确定如何实施 db.dashboard.findOne in express

也可以建议任何更好的方法,感谢任何帮助

提前致谢

【问题讨论】:

    标签: mongodb express mean-stack


    【解决方案1】:

    您引用 dashboard 集合的方式似乎是错误的。

    您可以将数据库实例绑定到集合或使用collection 方法。

    db.bind:

    function getById(_id) {
        var deferred = Q.defer();
    
        db.bind('dashboard');
        db.dashboard.findOne({user_id : _id}, function (err, user) {
            console.log(user)
    
            if (err) deferred.reject(err);
    
            if (user) {
                // return user (without hashed password)
                deferred.resolve(_.omit(user, 'hash'));
            } else {
                // user not found
                deferred.resolve();
            }
        });
    
        return deferred.promise;
    }
    

    db.collection:

    function getById(_id) {
        var deferred = Q.defer();
    
        var dashboard = db.collection('dashboard');
        dashboard.findOne({user_id : _id}, function (err, user) {
            console.log(user)
    
            if (err) deferred.reject(err);
    
            if (user) {
                // return user (without hashed password)
                deferred.resolve(_.omit(user, 'hash'));
            } else {
                // user not found
                deferred.resolve();
            }
        });
    
        return deferred.promise;
    }
    

    【讨论】:

    • 感谢您的回复....当我控制值时,我得到的结果为 null..我想查询类似这样的内容 db.dashboard.findOne({"user_id" : ObjectId("573765e5889380a83581f421" )}).....................我应该如何在express中添加ObjectId?
    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 2014-05-17
    • 1970-01-01
    相关资源
    最近更新 更多