我的社交网络架构如下:
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”
错误。有什么建议我缺少什么?