Как сохранить две записи через маршрут API POST в узле JS Express - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть эта функция API-маршрута, которая требует обновления записи темы, чтобы включить ссылку на сообщение, а затем сохранить фактическую создаваемую запись сообщения.Есть ли лучший способ сделать то, что я хочу сделать?возможно ли это?

const express = require('express');
const router = express.Router();

router.post('/:id/posts',  (req,res) => {
  const newPost = new Post({
      post: req.body.post,
      description: req.body.description,
      topic_id: req.params.id
  });
   Topic.findById(req.params.id)
      .then(topic => {
          topic.posts.push(newPost._id);
      })
          .catch(err => {
              res.send(err);
          });
  //how do i save this topic record I find and push an id into.


  newPost.save().then(post => res.json(post));
});

github line 33: https://github.com/wolffles/bloccit-node/blob/express/routes/api/topics.js

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Просто сохраните документ в обещании успеха возврата темы.Так же, как я написал ниже.Дайте мне знать, если это работает.

const express = require('express');
const router = express.Router();

router.post('/:id/posts',  (req,res) => {
  const newPost = new Post({
      post: req.body.post,
      description: req.body.description,
      topic_id: req.params.id
  });
   Topic.findById(req.params.id)
      .then(topic => {
          topic.posts.push(newPost._id);
          //now update the newPost
          newPost.topicObj = topic;
           newPost.save().then(post => res.json(post));
      })
          .catch(err => {
              res.send(err);
          });
  //how do i save this topic record I find and push an id into.


 
});
0 голосов
/ 21 сентября 2018

Вопрос

Как сохранить найденную и измененную запись темы?

Ответ

Попробуйте этос последним синтаксисом асинхронного ожидания JS.

router.post('/:id/posts',  async (req,res) => {
  const newPost = new Post({
      post: req.body.post,
      description: req.body.description,
      topic_id: req.params.id
  });
  try {
     await Topic.findById(req.params.id, (err, doc) => {
       doc.posts.push(newPost._id);
       doc.save();
     });
     const post = await newPost.save()
     res.json(post)
  } catch(err) {
     res.send(err)
  }
});

Дайте мне знать, если это работает для вас.

...