Пн goose findByIdAndUpdate не последовательно увеличивает мое поле подсчета для документа MongoDB - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь создать приложение для еженедельного планирования приема лекарств с использованием 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
}); 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...