【发布时间】:2019-11-21 21:32:15
【问题描述】:
我有一个node.js(express based) 服务器,其中有一个function,它返回所有users。这是函数。
export async function findAllUser() {
let users = await User.find({}).exec()
return users
}
在我的node.js 应用程序中,我有两个models(schema) 和Users 和Referrals,就像这样。
var User = mongoose.model(
"users",
new Schema({
first_name: String,
last_name: String,
name: String,
email: String,
password: String,
roleId: { type: Number, default: 0 },
country: String,
token: String,
createdAt: String,
updatedAt: String,
tempToken: String,
verificationCode: String,
fbUserId: String,
isFbUser: { type: Boolean, default: false },
isActive: { type: Boolean, default: true },
isEmailVerified: { type: Boolean, default: false },
rememberme: Boolean,
}, {
toJSON: { virtuals: true },
toObject: { virtuals: true }
})
);
User.virtual("referrals", {
ref: "referralLinks",
foreignField: "userId",
localField: "_id"
});
export var ReferralLink = mongoose.model(
"referralLinks",
new Schema({
referral_link: String,
referral_code: String,
isLink: Number,
offer_name: String,
offer_desc: String,
user_email: String,
companyId: { type: Schema.Types.ObjectId, ref: 'companies' },
addedByAdmin: { type: Boolean, default: true },
number_of_clicks: Number,
referral_country: String,
link_status: String,
categoryId: { type: Schema.Types.ObjectId, ref: 'categories' },
number_of_clicks: { type: Number, default: 0 },
createdAt: String,
updatedAt: String,
userId: { type: Schema.Types.ObjectId, ref: 'users' }
})
);
我有一个单独的api.route.js 文件,我在其中获得了所有用户这样的路由
router.get("/", log, getAllUsers);
我的api.controller.js 文件我有getAllUsers 这样的文件
export async function getAllUsers(req, res) {
try {
let Users = await findAllUser()
if (Users) {
generateResponse(true, "All Users fetched", Users, res)
} else {
generateResponse(false, "No Users found", null, res)
}
} catch (err) {
generateResponse(false, 'Error occured, 404 not found!', err, res)
}
}
在我的api.handler.js 文件中,我有findAllUser 这样的函数
export async function findAllUser() {
let users = await User.find({}).populate("referrals").exec()
return users
}
单个用户可以拥有多个Referrals。但不幸的是,我在Users 文档中没有“推荐人”参考_id。现在,我想让所有用户拥有各自的Referrals
我正确获取了所有users,但对于每个用户,我还想获取他们各自的所有referrals。因此,由于猫鼬查找的异步性质,我绝对不能使用for 或forEach 循环。那么我应该使用什么来代替for 或forEach 循环呢?
我想要的结果
results = [
{
first_name : "Fahad",
last_name : "subzwari",
email : "fahadsubzwari@gmail.com",
password : "***",
referrals : [
{
//referral object 1
},
{
//referral object 2 ...
}
]
},
{
first_name : "Alex",
last_name : "Hales",
email : "alex@gmail.com",
password : "***",
referrals : [
{
//referral object 1
},
{
//referral object 2 ...
},
{
//referral object 3 ...
}
]
},
]
【问题讨论】:
-
您说“我在用户中没有 'Referrals' 参考 _id”。推荐人是否参考了用户?你需要一些方法来链接它们。
-
你可以为用户和推荐模式添加代码吗?一些示例文档也可以。
-
@JamesTrickey 是的,我在
Referrals中有Users_id -
@JamesTrickey 我已经更新了我的问题,请看
标签: javascript node.js mongodb express mongoose