NodeJS Пн goose обновить документ - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь обновить или создать документ в коллекции MongoDB, используя «mon goose» следующим образом:

        this.statsModel.findOne(
            {product_id: requestData.ean},
        ).then((stats: mongoose.Schema) => {
            const productId: string = requestData.ean;
            // Update stats with the new scan...
            const beforeStats: mongoose.Schema = stats;

            const scan: any = {
                coords: {
                    lat: requestData.lat,
                    lon: requestData.lon,
                },
                at: new Date(),
            };

            if (stats) {
                stats.scans.push(scan);
                stats.update();
            } else {
                const newStat = new this.statsModel();
                newStat._id = requestData.ean;
                newStat.product_id = requestData.ean;
                newStat.scans = [scan];
                newStat.purchases = [];
                newStat.save();
            }

Когда этот код выполняется, новый элемент не появляется в «сканированиях» "свойство if имело документ статистики.

Документ создан правильно, если документ статистики не был найден.

Я попытался изменить метод" update () "на метод" save () " , но, таким образом, я получил «Ошибка версии Нет соответствующего документа для идентификатора ...»

Что я делаю не так?

С уважением ...

1 Ответ

0 голосов
/ 29 марта 2020

Наконец, обновите тип статистики, обещанной для Model вместо mon goose .Schema:

        this.statsModel.findOne(
            {product_id: requestData.ean},
        ).then((stats: Model<Stats>) => {
            const productId: string = requestData.ean;
            // Update stats with the new scan...
            const beforeStats: mongoose.Schema = stats;

            const scan: any = {
                coords: {
                    lat: requestData.lat,
                    lon: requestData.lon,
                },
                at: new Date(),
            };

            if (stats) {
                stats.scans.push(scan);
                stats.save();
            } else {
                const newStat = new this.statsModel();
                newStat._id = requestData.ean;
                newStat.product_id = requestData.ean;
                newStat.scans = [scan];
                newStat.purchases = [];
                newStat.save();
            }

Так что метод save () работает правильно ...

Thx

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