Node.js Mongoose/Mongodb-我应该显式地添加objectid来填充吗?
所以我有两个模型,一个是Node.js Mongoose/Mongodb-我应该显式地添加objectid来填充吗?,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,所以我有两个模型,一个是用户,另一个是会话 最初设置为: const users = mongoose.Schema({ _id: mongoose.Schema.Types.ObjectId, username: {type: String, unique: true}, } ); module.exports = mongoose.model('User', users,); 然后我继续添加了另一个模型,叫做sessions const sessions = mongoos
用户
,另一个是会话
最初设置为:
const users = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
username: {type: String, unique: true},
}
);
module.exports = mongoose.model('User', users,);
然后我继续添加了另一个模型,叫做sessions
const sessions = mongoose.Schema({
_id: {type: mongoose.Schema.Types.ObjectId, default: mongoose.Schema.Types.ObjectId, null: false},
user_id: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
timestamp: {type: Date},
});
module.exports = mongoose.model('Sessions', sessions);
然后我决定,我希望能够将用户的会话与用户一起拉,并添加
sessions:[{type:mongoose.Schema.Types.ObjectId,ref:'SurfSessions',default:null}]
到我的用户模型模式
我很快了解到,users.findOne(username:admin).populate('sessions')
本身不会填满会话,因为sessions
返回为空数组[]
由于我在
用户中没有会话
填充objectid
,这是否意味着我无法填充会话
,或者有其他方法吗?您应该能够使用虚拟填充:
const users = new mongoose.Schema(
{
_id: mongoose.Schema.Types.ObjectId,
username: { type: String, unique: true },
},
{ toJSON: { virtuals: true }, toObject: { virtuals: true } }
);
module.exports = mongoose.model('User', users);
然后:
userSchema.virtual('sessions', {
ref: 'Session', // model to search in
foreignField: 'user_id',
localField: '_id', // checks where user_id on session === _id on user
});
在此之后,正常使用.populate('sessions')。欲了解更多信息,请查看此帖子:请查看有类似问题的帖子谢谢,之前已经多次查看该问题,但仍然没有回答我的问题。