我正在使用 Sails v0.10.5。
我创建了三个模型,它们之间存在关联。存在一个Candidate
模型、一个Evaluator
模型和一个Rating
模型,评估者通过该模型对候选人进行评分。我正在使用 Waterline 关联自动跟踪从 Rating
到 Evaluator
和 Candidate
的外键。
我还使用 Blueprint 自动处理这些模型的所有 CRUD 路由。
不幸的是,每当我通过 Blueprint 使用诸如 http://localhost:1337/rating/create? rating=4&comment=Great&evaluator=3&candidate=2
之类的 url 创建新候选时,除了触发之外预期的 CREATE,sails 也会返回并调用 2 个 UPDATE,在此期间正在设置每个 Candidate
和 Evaluator
的外键。
这导致我的应用程序前端出现问题,因为它接收到 UPDATE 事件而不是 CREATE 事件,并且没有必要的上下文来正确处理来自服务器的新数据。
任何解决此问题的建议都会很有帮助!
以下是 Waterline 模型:
/api/models/Candidate.js
:
module.exports = {
schema: true,
attributes: {
name: {
type: 'string',
required: true
},
status: {
type: 'string',
required: true
},
role: {
type: 'string',
required: true
},
ratings: {
collection: 'rating',
via: 'candidate'
}
}
};
/api/models/Evaluator.js
:
module.exports = {
schema: true,
attributes: {
name: {
type: 'string',
required: true
},
title: {
type: 'string',
required: true
},
role: {
type: 'string',
required: true
},
ratings: {
collection: 'rating',
via: 'evaluator'
}
}
};
/api/models/Rating.js
:
module.exports = {
schema: true,
attributes: {
rating: {
type: 'integer',
required: true
},
comment: {
type: 'string',
required: false
},
evaluator: {
model: 'evaluator',
required: true
},
candidate: {
model: 'candidate',
required: true
}
}
};
最佳答案
我遇到了类似的问题。您可以在更新事件中创建一个过滤器来检查某些变量是否已更新,如果更新了,则调用一些影响您前端的函数。
关于javascript - SailsJS 在创建具有关联的对象时触发更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515608/