Функция, которая возвращает обещание, не работает должным образом - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть эта цепочка обещаний в моем коде, и она прекрасно работает. Документ действительно имеет значение и не является нулевым

...
.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)
    ...

Теперь я хочу абстрагировать этот запрос в функцию, чтобы его можно было повторно использовать.

Я бы подумал, что это сработает, но по какой-то причине документ всегда имеет значение null, и когда я запускаю сгенерированный запрос, он дает результат.

Почему документ обнуляется при абстрагировании этого запроса в собственную функцию?

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)
...

1 Ответ

2 голосов
/ 25 апреля 2019

Я думаю, что скобка для findOneDocumentQuery неправильная, она должна быть:

return findOneDocumentQuery(db, _document.get('id'), req.transaction);

...