Попробуйте обновить, если документ существует, или создайте новый. - PullRequest
0 голосов
/ 02 апреля 2020

Моя цель - обновить документ и, если он существует, создать новый документ.

, если документ существует, обновить статус до 1

{
    "participants": ["currentUserId", "targetedUserId"],
    "status": 1
    "_id": "5e85c139eeaa68224dbc7a2f",
    "__v": 0
}

, если документ не существует. Существуют создать точную запись, как указано выше

    {
        "participants": ["currentUserId", "targetedUserId"],
        "status": 1
        "_id": "5e85c139eeaa68224dbc7a2f",
        "__v": 0
    }

Моя схема

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

const MatchSchema = new Schema({
  participants: [{ type: Schema.Types.ObjectId, ref: "User" }],
  matchStatus: Number
});

module.exports = mongoose.model("Match", MatchSchema);

Маршрутизатор

app.get('/test', () => {
   try {
    let query = {
      participants: {
        $all: [
          { $elemMatch: { $eq: currentUserId } },
          { $elemMatch: { $eq: targetedUserId } }
        ]
      }
    };
    let update = { expire: new Date() };
    let options = { upsert: true, new: true, setDefaultsOnInsert: true };
    let potentialMatch = await Match.findOneAndUpdate(query, update, options);
    // I want to update the status as well, but not sure how to do it.
    res.json(potentialMatch);
  } catch (err) {
    res.json(err.message);
  }
})

Я продолжаю получать новую запись, идентификатор для обоих currentUserId и targetedUserId уже существуют в моей базе данных, она должна показывать существующую версию

{
    "participants": [],
    "_id": "5e85c139eeaa68224dbc7a2f",
    "__v": 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...