Автоматическая вставка несуществующего значения с помощью findOneAndUpdate и upsert - PullRequest
0 голосов
/ 23 июня 2019

Мой вариант использования:

=> ОБНОВЛЕНИЕ: установить текущую дату, если я нашел конкретное письмо (работает)

=> INSERT: конкретное письмо с нулевой датой, если сообщение, переданное в запросе, не найдено (не работает)

Я думал, что upsert должны были быть вставлены, если конкретное письмо не было найдено, но по какой-то причине это не так.

Структура JSON

    "listener": [
        {
            "email": "email",
            "date": "2019-06-23T00:22:52.190Z"
        }
    ],

Маршрут

exports.add_listener = function (req, res) {
    Playlist.findOneAndUpdate(
        {"platform.strauss": req.body.url},
        {$set: {"listener.$[elem].date": new Date()}},
        {
            arrayFilters: [{"elem.email": req.body.email}],
            upsert:true,
            new:true,
        }, function (err, data) {
            err ? console.error(err) : res.status(200).send(data);
        }
    )
};
...