метод findAll не может вернуть null для ненулевого поля ID(sequelize)
Мне нужно вернуть в return в резолвере последнюю добавленную запись в таблицу бд. Мне не понятно c чем связано сообщение об ошибке "message": "Cannot return null for non-nullable field Contact.id." поскольку я новичок в использовании GraphQL.
Схема:
import { buildSchema } from 'graphql';
export var schema = buildSchema(`
type Contact {
id: ID!
firstName: String
lastName: String
email: String
}
type Query {
contacts: [Contact]
}
type Mutation {
createContact(firstName: String!, lastName: String!, email: String!): Contact!
updateContact(id: ID!, firstName: String!, lastName: String!, email: String!): String
deleteContact(id: ID!): String
}
`);
Резолвер:
create(contact){
this.сontactModel.create({firstName: contact.firstName,
lastName: contact.lastName,
email: contact.email}).then(res=>{
console.log(res);
}).catch(err=>console.log(err));
const res = this.сontactModel.findAll({
limit: 1, order: [['id', 'DESC']]});
return res;
};
Ответы (1 шт):
Нужно использовать метод findOne() вместо findAll(). Я заметил некую закономерность: в схеме описан тип Query, который возвращает список контактов. Для него findAll() сработает, в случае мутации на создание здесь возвращаемый тип один контакт и для него findAll() не сработает несмотря на ограничение в одну запись. Это связано с тем, что findAll() возвращает массив и если взять его с ограничением в одну запись, он вернет массив с одной записью. А findOne() действительно возвращает ЭЛЕМЕНТ ИЗ МАССИВА.