Возврат json из MongoDB - PullRequest
       4

Возврат json из MongoDB

0 голосов
/ 09 апреля 2020

Я возвращаю свою первую строку из БД следующим образом

     const myobj = Post.find().sort({_id:-1}).limit(1);

, но когда я пытаюсь определить значения для моего массива, он возвращает: [{"id": 1}]

    app.get("/api/solutions", (req, res) => {
        const myobj = Post.find().sort({_id:-1}).limit(1);
        const solutions = [
          {
              id: 1,
              title: myobj.title,
              subTitle: myobj.slogan,
              description: myobj.description
          },
        ]
        res.json(solutions);
     });
    const port = 5000;
    app.listen(port, () => console.log(`Server started on port ${port}`));

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 09 апреля 2020

Как и многие вещи во вселенной Node, запросы Mon goose являются асинхронными. Вы не ждете, пока база данных вернет свой результат. Вам нужно await it.

Также, .find() возвращает массив. .find().limit(1) вернет массив из 1 элемента. Вы хотите использовать .findOne(), который возвращает один документ.

app.get("/api/solutions", async (req, res) => { // <-- add async

        const myobj = await Post // await Mongoose
                          .findOne() // Replace find().limit(1) with .findOne()
                          .sort({_id:-1}) // I don't think this is useful
                          .exec(); // add .exec()

        const solutions = [
          {
              id: 1,
              title: myobj.title,
              subTitle: myobj.slogan,
              description: myobj.description
          },
        ]
        res.json(solutions);
});

const port = 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...