使用'populate'

时间:2018-04-16 04:03:59

标签: node.js mongodb express mongoose

我的社交网络架构如下:

const UserSchema = new Schema({
    name : {type : String},
    location : {type : String},
    picture :{type:String}
    social : {
        type : {
            followers : {
                type : [{user : {type : mongoose.Schema.Types.ObjectId,ref : 'User'},date : {type :Date,default : new Date(Date.Now())} }],
                select : false
            },
            requests : {
                type : {
                    follow : {
                        type : [{user : {type : mongoose.Schema.Types.ObjectId,ref : 'User'},date : {type :Date,default : new Date(Date.Now())}}]
                    },
                    select : false
                }
                select : false
            }
        },
        select : false
    }
});

还有其他文件用于用户架构,但我只显示必填字段 我正在尝试检索用户的所有关注者,用户正在关注的所有其他用户,关注请求用户已接收以及用户已发送的所有关注请求。 并且所有被检索的用户必须只有_id,名称,位置和图片。 这是我到目前为止所尝试的:

 exports.user_connections = function (req, res, next) {
    let userId = req.params.id;
    async.parallel({
        followers: function (callback) {
            User.findById(userId).select('social.followers').populate('name location picture')
                .exec(callback)
        },
        following: function (callback) {
            User.find({ 'social.followers.user': userId }).populate('name location picture')
                .exec(callback);
        },
        follow_requests: function (callback) {
            User.findById(userId).select('social.requests.follow').populate('name location picture')
                .exec(callback)
        },
        follow_requested: function (callback) {
            User.find({ 'social.requests.follow.user': userId }).populate('name location picture')
                .exec(callback)
        }
    }, function (err, results) {
        if (err) {
            return next(err);
        }
        if (results.followers == null && results.following == null) {
            var err = new Error("No followers and following");
            err.status = 404;
            return next(err);
        }
        return res.send(results);
    });
}

但我收到CastError: Cast to ObjectId failed for value “{name : Username}” at path “_id”错误。有什么建议我缺少什么?

0 个答案:

没有答案