使用猫鼬虚拟模式时检查多个字段?
Check against multiple fields when using Mongoose Virtual schema?
我在尝试找出在我的数据库中填充虚拟模式的最佳方法时遇到了一些困难。在这种情况下,我想检查多个字段,但我不知道有什么方法可以做到这一点或其他方法。
我曾希望我可以在虚拟模式的 'localField' 和 'foreignField' 键中使用一些字符串数组,但事实并非如此。
用户保存了一个'Series'_id,虚拟模式'leagues'也得到了用户进入的所有联赛,关键是联赛属于不同的系列。我只想检索用户进入的联赛以及与用户系列 _id 匹配的联赛...
如您所见,目前这个虚拟架构只是 returns 用户进入的所有联赛,与系列赛无关。 :(
有什么想法吗?我一直很困惑如何实现这个。
const schema: mongoose.Schema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
username: {
type: String,
unique: true,
},
series: {
ref: 'Serie',
type: mongoose.Schema.Types.ObjectId,
autopopulate: {
maxDepth: 1,
select: ['title']
}
}
});
schema.virtual('leagues', {
ref: 'League',
localField: '_id',
foreignField: 'users',
autopopulate: {
maxDepth: 1,
select: ['title', 'engineSize', 'host', 'series']
}
});
联赛架构如下所示
const schema: mongoose.Schema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
title: String,
series: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Serie',
},
users: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
}]
});
这是我使用 getter.
检查 mongoose 中多个字段的解决方案
schema.virtual('motoduel').get(function () {
return motoduelModel.findOne({
event: this.series.upcomingEvent._id,
riderGroup: this.riderGroup._id
});
});
我在尝试找出在我的数据库中填充虚拟模式的最佳方法时遇到了一些困难。在这种情况下,我想检查多个字段,但我不知道有什么方法可以做到这一点或其他方法。
我曾希望我可以在虚拟模式的 'localField' 和 'foreignField' 键中使用一些字符串数组,但事实并非如此。
用户保存了一个'Series'_id,虚拟模式'leagues'也得到了用户进入的所有联赛,关键是联赛属于不同的系列。我只想检索用户进入的联赛以及与用户系列 _id 匹配的联赛...
如您所见,目前这个虚拟架构只是 returns 用户进入的所有联赛,与系列赛无关。 :(
有什么想法吗?我一直很困惑如何实现这个。
const schema: mongoose.Schema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
username: {
type: String,
unique: true,
},
series: {
ref: 'Serie',
type: mongoose.Schema.Types.ObjectId,
autopopulate: {
maxDepth: 1,
select: ['title']
}
}
});
schema.virtual('leagues', {
ref: 'League',
localField: '_id',
foreignField: 'users',
autopopulate: {
maxDepth: 1,
select: ['title', 'engineSize', 'host', 'series']
}
});
联赛架构如下所示
const schema: mongoose.Schema = new mongoose.Schema({
_id: {
type: mongoose.Schema.Types.ObjectId,
auto: true
},
title: String,
series: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Serie',
},
users: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
}]
});
这是我使用 getter.
检查 mongoose 中多个字段的解决方案 schema.virtual('motoduel').get(function () {
return motoduelModel.findOne({
event: this.series.upcomingEvent._id,
riderGroup: this.riderGroup._id
});
});