【发布时间】:2020-07-05 17:14:09
【问题描述】:
我有两个collection。
A:Manager
const ManagerSchema = Schema({
name: { type: String, require: true },
family: { type: String, require: true },
userName: { type: String, require: true },
phoneNumber: { type: String, require: true },
password: { type: String, require: true },
isAdmin: { type: Boolean, require: true, default: true },
isDelete: { type: Boolean, default: false },
isActive: { type: Boolean, default: false },
avatar: { type: String, default: null },
scurityStamp: { type: String },
locked: { type: Boolean, default: false },
lockedDate: { type: Date, default: null },
accountFail: { type: Number, default: 0 },
});
ManagerSchema.virtual('userRole',{
ref : 'UserRole',
localField : 'userRole',
foreignField : 'user'
})
乙:UserRole
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserRoleSchema = Schema({
role: { type: Schema.Types.ObjectId, ref:'Roles' },
user: { type: Schema.Types.ObjectId, ref:'Managers'}
});
module.exports = mongoose.model("UserRole", UserRoleSchema);
现在我需要向用户返回 UserRole 信息。我写了这段代码:
let auth=await Manager.findOne({userName:req.body.userName}).populate('userRole').exec();
但它不返回UserRole信息:
"isAdmin": true,
"isDelete": false,
"isActive": true,
"avatar": null,
"locked": false,
"lockedDate": null,
"accountFail": 0,
"_id": "5f01dfc32714600aa8aa41bc",
"name": "کیانوش",
"family": "درتاج",
"password": "$2b$15$WUgWTWuO/frlzWaGsfAHD.Jhp6ecqzL8Sr4g02B.XPceluXtJv0Z6",
"phoneNumber": "0900018500ب98یdf0710bh06016",
"userName": "kiadب0r0890037یh00f0072",
"scurityStamp": "3db582c74dccbc628338bc8bcf62d405",
如何返回用户角色信息????
【问题讨论】:
-
@RameshReddy 是的,它不起作用
-
您的
ManagerSchema没有名为userRole的本地字段。 -
@RameshReddyi 创建一个虚拟字段
-
您正在创建一个虚拟字段,但我认为您不能使用与
localField相同的字段。 -
@RameshReddy 我该如何解决这个问题?
标签: javascript node.js mongoose