Использование Mongoose $ push в типе схемы массива - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть следующие схемы пользователей и сообщений, для которых пользователи имеют следующий тип данных:

postCreated:{
    type: Array,
    default: []
}

А серверный маршрут для Постов:

server.post('/posts',(req,res,next) => {
    const {username,title,categories,content} = req.body;
    const post = new Posts({
        username,
        title,
        categories,
        content
    });
    post.save().then((doc) => {
        console.log(doc);
        res.send(doc);
        User.findOneAndUpdate({username}, {$push: {'postCreated': doc}});
    })
    .catch((e) => {
        return next(new errors.BadRequestError(e.message));
    });
});

Сохраняет вновь созданный пост в базу данных и обновляет свойство postCreated в пользовательской схеме. Тем не менее, мой текущий код не работает, есть ли способ, которым я мог бы поместить эту вновь созданную публикацию в массив 'Post Created'?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 09 ноября 2018

Посмотрите, будет ли это работать для вас:

server.post('/posts',(req,res,next) => {
    const {username,title,categories,content} = req.body;
    const post = new Posts({
        username,
        title,
        categories,
        content
    });
    return post.save()
      .then(doc => User.findOneAndUpdate({username}, {$push: {'postCreated': doc}})
        .then(() => res.send(doc)))
    .catch(e => {
        return next(new errors.BadRequestError(e.message));
    });
});

Вам не хватает возврата для post.save, а также для User.findOneAndUpdate. Также ваш res.send(doc), вероятно, должен быть последним в вашей функции.

...