пн goose. Можно ли удалить, если существует, и вставить, если не в одной операции? - PullRequest
0 голосов
/ 08 января 2020

у меня есть подобный модуль, который будет использоваться много ! пользователи собираются отправлять подобные запросы, если объект понравился или нет.

(«нравится и не похоже» вызывает одну и ту же конечную точку REST) ​​

я могу сделать findByIdAndRemove и проверить, если он удалил что-нибудь, и если нет, создайте LIKE.

я могу findOne LIKE и удалите, если существует, и создайте, если нет.

, но этот способ наиболее вероятно состоит из двух операций, отправляемых в базу данных. , (в некоторых случаях 1 операция).

что я спрашиваю: возможно ли сделать это за одну операцию?

* Поля LikeSchema: *

_id _object _user createdAt

Обновление # 1: мой лайк модель по запросу:

const likeSchema = mongoose.Schema({
    _user: {
        type: mongoose.Schema.ObjectId,
        ref: 'User',
        require: true
    },
    _entity: {
        type: mongoose.Schema.ObjectId,
        require: true
    },
    type: {
        type: String,
        enum: ['path', 'stage', 'step', 'task', 'user']
    }
}, {
    timestamps: true,
    toJSON: {
        virtuals: true
    },
    toObject: {
        virtuals: true
    }
});

likeSchema.virtual('user', {
    ref: 'User',
    localField: '_user',
    foreignField: '_id',
    justOne: true
});

module.exports = mongoose.model('Like', likeSchema);

Обновление 2: входные параметры

ps: идентификатор пользователя добавляет базу на свой токен.

{
    "_entity" : "5d725a1b7b292f5f8ceff788",
    "type" : "path"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...