Я прочитал учебник apollo-server-tutorial, и я пытаюсь воспроизвести его только с mongodb - no sqllite. Я прихожу из метеора, поэтому я изучаю асинхронные и мангусты, пока я нахожусь в нем.
Моя мутация для addAuthor() работает правильно (я вижу новую запись в БД), но graphiql возвращает null. Как я могу вернуть ожидаемые поля?
mutation {
addAuthor(firstName: "falieson", lastName:"p") {
_id
firstName
lastName
}
}
{
"data": {
"addAuthor": null
}
}
Схема: https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/schema.js#L39
Резольвер: https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/resolvers.js#L38
Модель: https://github.com/Falieson/apollo-server-tutorial-only-mongodb/blob/master/data/models/index.js#L7
Мне нужно было, чтобы мангустцы обещали мутацию. Итак, мой MongooseModel.create() изменяется от
const record = new this.collection(args)
return record.save(cb)
использовать Promise
const record = new this.collection(args)
return new Promise((resolve, reject) => {
record.save((err, res) => {
err ? reject(err): resolve(res)
});
});
к использованию Async/Await
async create(obj = {}) {
const args = {
...this.defaultRecord(),
...obj
}
const record = new this.Collection(args)
try {
const savedRecord = await record.save()
return savedRecord
} catch (err) {
handleError(err)
}
}
Моя мутация не должна меняться вообще, но мой генератор светильников также должен быть обновлен, чтобы использовать цепочку Promise.then().