基本上,我为用户设置了三个角色
1.管理员
1.卖方
1.买主
这是我的用户方案
const userSchema = mongoose.Schema({
email: { type: String, required: true, unique: true },
password: { type: String, required: true, select: false },
role: { type: String, enum: ['seller', 'buyer'], required: true },
admin: { type: mongoose.Schema.Types.ObjectId, ref: 'Admin' },
seller: { type: mongoose.Schema.Types.ObjectId, red: 'Seller'},
buyer: { type: mongoose.Schema.Types.ObjectId, ref: 'Buyer' },
})
userSchema.plugin(uniqueValidator)
module.exports = mongoose.model('User', userSchema)
这是我的用户角色架构卖方架构
const sellerUserSchema = mongoose.Schema({
user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
firstName: { type: String, required: true },
lastName: { type: String },
email: { type: String, required: true, unique: true },
dob: { type: Date, min: '1950-01-01', max: new Date() },
})
买方模式
const buyerUserSchema = mongoose.Schema({
user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
firstName: { type: String, required: true },
lastName: { type: String },
email: { type: String, required: true, unique: true },
dob: { type: Date, min: '1950-01-01', max: new Date() },
})
现在当我这样做
const usersQuery = Seller.find().populate('user').then(d=>{
console.log('details',d)
})
我得到正确的结果,就像我得到卖家数据,然后用户对象,包括所有细节,你可以在截图下面检查结果
但当我喜欢const usersQuery = User.find().populate('seller','buyer')
我没有得到任何类型的卖方或买方数据这里是附加的结果
因此,我的预期结果就像我得到了用户数据和内部卖方或买方对象
下面是我的MongoDB的数据库结构
用户
卖家
买家收藏和卖家一样
任何帮助都将不胜感激
1条答案
按热度按时间wfveoks01#
由于在用户模式中没有“seller”或“buyer”的引用,因此应尝试Aggregate Instead
正如我从屏幕截图中看到的,您的“seller”集合中还没有任何文档,因此您现在将在“sellerSchemaUser”中得到一个空数组。注意:Lookup将以对象数组的形式从其他集合中返回匹配的文档。