我的代码中有这个Promise链,它工作得很好。文档实际上有一个值,并且不为空
...
.then(() => {
return db.document.findOne({
where: {
id: _document.get('id', req.transaction)
},
include: [{
model: db.documentChildren,
attributes: ['id', 'reference', 'uri', 'contentType', 'type', 'page']
},
{
model: db.tag,
attributes: ['id', 'key', 'value'], // We don't want meta columns
through: { attributes: [] } // Exclude join table
}],
transaction: req.transaction
})
})
.then(document => {
console.log('document = ', document)
...
现在,我想将该查询抽象为一个函数,以便可以重复使用。
我本以为这样会行得通,但是由于某些原因,文档始终为空,并且当我运行生成的查询时,它确实有结果。
为什么将此查询抽象为自己的函数时文档为空?
function findOneDocumentQuery (db, id, transaction) {
return db.document.findOne({
where: {
id: id
},
include: [{
model: db.documentChildren,
attributes: ['id', 'reference', 'uri', 'contentType', 'type', 'page']
},
{
model: db.tag,
attributes: ['id', 'key', 'value'], // We don't want meta columns
through: { attributes: [] } // Exclude join table
}],
transaction: transaction
})
}
...
.then(() => {
return findOneDocumentQuery(db, _document.get('id', req.transaction))
})
.then(document => {
console.log('document = ', document)
...
答案 0 :(得分:2)
我认为findOneDocumentQuery
的括号是错误的,应该是:
return findOneDocumentQuery(db, _document.get('id'), req.transaction);