gpt4 book ai didi

node.js - 如何递归获取附加到 Mongoose 模型的所有对象

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:37 26 4
gpt4 key购买 nike

想象一下这两个嵌套的 Mongoose 模型,一个包含候选人列表的投票

    var candidateSchema = new Schema({
name: String
});

var voteSchema = new Schema({
candidates: [{ type: Schema.Types.ObjectId, ref: 'Candidate' }]
});

voteSchema.methods.addCandidate = function addCandidate(newCandidate, callback) {
this.candidates.addToSet(newCandidate);
this.save(callback);
};

var Vote = mongoose.model('Vote', voteSchema);
var vote = new Vote();

var Candidate = mongoose.model('Candidate', candidateSchema);
var candidate = new Candidate({ name: 'Guillaume Vincent' });
vote.addCandidate(candidate);

console.log(vote); // { _id: 53d613fdadfd08d9ebea6f88, candidates: [ 53d68476fc78cb55f5d91c17] }
console.log(vote.toJSON()); // { _id: 53d613fdadfd08d9ebea6f88, candidates: [ 53d68476fc78cb55f5d91c17] }

如果我使用 candidates: [candidateSchema] 而不是 candidates: [{ type: Schema.Types.ObjectId, ref: 'Candidate' }] console.log(投票); 显示:

{
_id: 53d613fdadfd08d9ebea6f88,
candidates: [ { _id: 53d613fdadfd08d9ebea6f86, name: 'Guillaume Vincent' } ]
}

我的问题是:

使用 candidates: [{ type: Schema.Types.ObjectId, ref: 'Candidate' }] 如何递归获取附加到模型的所有对象?与候选者相同的行为:[candidateSchema]

我没有使用嵌入式架构,因为我希望在更新候选人时更新我的​​投票(请参阅 https://stackoverflow.com/a/14418739/866886 )

最佳答案

你看过Mongoose对population的支持吗? ?

例如:

Vote.find().populate('candidates').exec(callback);

将使用每个 ID 的完整 Candidate 对象填充 candidates 数组。

关于node.js - 如何递归获取附加到 Mongoose 模型的所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com