gpt4 book ai didi

javascript - 在Sequelize中使用classMethods有没有办法更简洁?

转载 作者:行者123 更新时间:2023-11-30 15:29:59 24 4
gpt4 key购买 nike

我有一个模型 intent,它与 conditionslinks 以及 nodes 有一个 hasMany 关联节点本身也与链接有关联。

我想通过一条快速路线获取一个对象中的所有信息。我现在做的方式是非常回调和不可读的。它有效,但我希望有更好的方法来编写此类内容。

app.get('/api/intents/:id', function(req, res) {
models.intent.findOne({
where: {
id: req.params.id
}
})
.then(function(intent) {
intent.getConditions() // call generated function from intent model for conditions
.then(function(conditions) {
intent.getLinks() // then call generated function from intent model for links
.then(function(links) {
intent.getNodes() // then call generated function from nodes model for links
.then(function(nodes) {
Promise.map(nodes, function(node) {
return node.getLinks() // Even deeper nested and getting out of hand
.then(function(links) {
node.setDataValue('links', links)
})
})
.then(function() {
intent.setDataValue('conditions', conditions)
intent.setDataValue('links', links)
intent.setDataValue('nodes', nodes)
res.json(intent)
})
})
})
})
})
})

最佳答案

我认为您完全错过了 findOne 等方法的 options 对象中 include 的概念。只需使用

models.intent.findById(req.params.id, {
include: [
{ model: models.condition },
{ model: models.link },
{ model: models.node, include: [ { model: models.link } ]
]
}).then((intent) => {
// here you get intent with conditions, links and nodes with links
});

另一种方法是定义和使用 scopes在模型上。

关于javascript - 在Sequelize中使用classMethods有没有办法更简洁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42383463/

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