У меня есть модель intent
, которая имеет hasMany
связь с conditions
и links
и nodes
. У самих nodes
есть связь с links
.Есть ли способ быть более кратким при использовании classMethods в Sequelize?
По экспресс-маршруту я хочу получить всю эту информацию в одном объекте. То, как я это сделал, теперь очень обратное и нечитаемое. Это работает, но я надеюсь, что есть лучший способ написать такие вещи.
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)
})
})
})
})
})
})
Ваш гораздо лучший способ. –
О, ничего себе, я думаю, я был ослеплен автоматически сгенерированными функциями. Это прекрасно, спасибо. – Hyra