Как создать в пн goose, если не существует, но не обновить - PullRequest
0 голосов
/ 15 января 2020

Я нашел только способы создания или обновления документа. Мне нужно создать, если не существует, но ничего не делать, если он уже существует. Как это сделать в пн goose?

Обратите внимание, что findOneAndUpdate не будет работать, потому что, если он заканчивает документ, он обновляет его! Я не хочу этого.

ОБНОВЛЕНИЕ:

Я просто хочу создать переменную с именем order_number, которую можно увеличивать. Однако для приращения я должен убедиться, что документ существует. Однако я не могу обновить его значение , если оно существует .

Я пытался:

let r = await OrderNumber.findOneAndUpdate({ unique: 0 }, { unique: 0, order_number: 0 }, { upsert: true });

Он успешно создается, когда его не существует, но всегда обновляет order_number до 0. Я не хочу, чтобы это произошло.

1 Ответ

1 голос
/ 16 января 2020

Как единственный способ найти его с помощью двух вызовов БД, так как в целом вставки не имеют никаких фильтров, если не используются findOneAnd* или upsert на updates - что мы не рассматриваем. Тогда единственный вариант - сделать два вызова, вот базовый c код, оберните их в соответствующую функцию & try/catch, чтобы добавить обработку ошибок:

const mongoose = require('mongoose')
const Schema = mongoose.Schema;

const orderNumberSchema = new Schema({
    any: {}
}, {
    strict: false
});

const OrderNumber = mongoose.model('order_number', orderNumberSchema, 'order_number');

let resp = await OrderNumber.findOne({ unique: 0 });

if (!resp) {
    let orderNumberObj = new OrderNumber({ unique: 0, order_number: 0 })
    let r = await orderNumberObj.save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...