у меня есть подобный модуль, который будет использоваться много ! пользователи собираются отправлять подобные запросы, если объект понравился или нет.
(«нравится и не похоже» вызывает одну и ту же конечную точку 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"
}