出现场景
因为实际开发时,团队不太习惯使用_id字段,因此要优化_id使之重命名成id,下面是本人的解决方案。
解决方案
方案一
使用变换函数,设置它的返回值,但是这个方案好像只对find查询语句生效,而对aggregate不起作用,希望大佬解答一下┻┳|・ω・)
// theme.model.js
ThemeSchema.options.toJSON = {
virtuals: true,
transform(doc, ret) {
ret.id = ret._id
delete ret._id
}
}
const Theme = mongoose.model("Theme", ThemeSchema,"theme")
方案二
通过aggregate上的project投影设置id映射到_id上,但是这种方案字段多的时候写会很繁琐
const list = await Theme.aggregate([
{
$lookup: {
from: "star",
localField: "_id",
foreignField: "theme_id",
as: "star"
},
},
{
$project: {
id: "$_id",
user: "$user",
_id: "$-"
...
}
}
]).skip(offset).limit(limit)
以上就是本人两种解决方案,欢迎大佬补充。QAQ