gpt4 book ai didi

node.js - 如何使用依赖于使用 Node.js 和 Mongoose 的另一个文档的动态变量来过滤文档?

转载 作者:行者123 更新时间:2023-12-05 06:08:39 26 4
gpt4 key购买 nike

此时我有点卡住了...我需要向文档添加一个新属性,该属性会根据同一文档的值和另一个文档的值而变化。我举个例子让它更好理解。

我有一个候选模式:

const CandidateSchema: Schema<ICandidate> = new Schema({
role: {type: String},
yearsOfExperience: {type: Number},
compatibility: {type: Number} // Dynamic prop
});

还有一个工作模式

const JobSchema: Schema<IJob> = new Schema({
title: {type: String},
postDate: {type: String},
requirements: {
role: {type: String},
yearsOfExperience: {type: Number}
}
});

现在我需要根据候选人的值和引用工作向候选人的“兼容性”属性添加一个新值。这个新属性将是候选人与工作要求之间的兼容性。在某些情况下,我将需要根据兼容性属性找到 Candidates。

提前谢谢你。

最佳答案

我想你需要的是 pre hook on save ,在这种情况下是这样的:

    CandidateSchema.pre('save', async function() {
if(this.isModified('someothervalue'){
const job = await JobSchema.find({'related job query'});
this.compatibility = job.somevalue + this.someothervalue; //this is your current candidate
}
});

JobSchema.post('save', async function(job) {
const candidates = await CandidateSchema.find({'related candidates query'});
const candidateUpdates = [];
candidates.forEach(candidate => {
candidate.compatibility = job.somevalue + candidate.someothervalue; //this is your current candidate
candidateUpdates.push(candidate.save());
})
await Promise.all(candidateUpdates);
});

处理上述内容可能很多,但基本上意味着当您更新职位时,所有相关用户(“相关候选人查询”)都会在职位更新之后得到更新(通常您将只需要检查影响用户兼容性的字段是否更改,但这是另一回事),并且第一个 Hook 只是更新用户的兼容性当他的字段影响它更新(如 someothervalue)。

关于node.js - 如何使用依赖于使用 Node.js 和 Mongoose 的另一个文档的动态变量来过滤文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65088284/

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