Я пытаюсь создать приложение для еженедельного планирования приема лекарств с использованием Mon goose, MongoDB и GraphQL. У меня есть мутация editPillCount
, когда я передаю значение лекарства id GraphQLNonNull(GraphQLID)
и значение update GraphQLNonNull(GraphQLInt)
.
Использование следующей мутации GraphQL:
mutation {
editPillCount(id:"5e7278d38be630025866a470", update: 1) {
name
count
}
}
Дает вывод:
{
"data": {
"editPillCount": null
}
}
Моя проблема: Функция разрешения не возвращает новейшее значение хотя я использую {new: true}
и поле count не постоянно увеличивается на значение update. Как я могу это исправить?
Пока другие мутации для первоначального добавления нового лекарства и других запросов работают правильно.
Схема медицины: медицина. js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const medicineSchema = new Schema({
id: String,
count: Number,
name: String,
times: [Number],
dayNames: [String]
});
module.exports = mongoose.model('Medicine', medicineSchema);
Схема дня недели: dayOfWeek. js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const dayOfWeekSchema = new Schema({
_id: String
});
module.exports = mongoose.model('DayOfWeek', dayOfWeekSchema);
Root Запрос: схема. js
const RootQuery = new GraphQLObjectType({
name: 'RootQueryType',
fields: {
medicine: {
type: MedicineType,
args: { id: { type: GraphQLID }},
resolve(parent, args) {
return Medicine.findById(args.id);
}
},
dayOfWeek: {
type: DayOfWeekType,
args: { name: { type: GraphQLString }},
resolve(parent, args) {
return DayOfWeek.findById(args.name);
}
},
medicines: {
type: new GraphQLList(MedicineType),
resolve(parent, args) {
return Medicine.find({});
}
},
dayOfWeeks: {
type: new GraphQLList(DayOfWeekType),
resolve(parent, args) {
return DayOfWeek.find({});
}
}
}
});
Edit1: я печатаю console.log("Medicine updated successfully")
, и он печатается только один раз, но добавляется два или три раза , Мутация: схема. js
const Mutation = new GraphQLObjectType({
name: 'Mutation',
fields: {
editPillCount: {
type: MedicineType,
args: {
id: { type: new GraphQLNonNull(GraphQLID) },
update: { type: new GraphQLNonNull(GraphQLInt) }
},
resolve (parent, args) {
return Medicine.findByIdAndUpdate(
args.id,
{ $inc: { count: args.update }},
{ new: true, useFindAndModify: false },
function(err, response) {
if (err) {
console.log("Error updating medicine counts.");
} else {
console.log("Medicine updated successfully.");
}
}
);
}
}
}
});
Схема Экспорт схемы. js
module.exports = new GraphQLSchema({
query: RootQuery,
mutation: Mutation
});