Как использовать мультизапрос с nodejs express mongodb - PullRequest
0 голосов
/ 13 февраля 2020

Как использовать несколько запросов, таких как поиск, обновление, вставка, удаление в одном сервисе на mongodb

Я могу запросить это ниже

router.get('/userlist', function(req, res) {

  User.find({},function (err, docs) {
    res.json(docs);
  });
});

, но я хочу запросить, как это ошибка

router.get('/userlist', function(req, res) {
  var data = array();
  User.find({},function (err, docs) {
     data['data1'] = docs
  })
  Content.find({},function (err, docs) {
    data['data2']  = docs
  })
  res.json(docs)
});

Может кто-нибудь помочь мне или можно использовать запрос, как этот? Спасибо

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

Вы можете использовать asyn c await для запуска нескольких запросов mon go внутри функции, как показано ниже:

router.get('/userlist', async function(req, res) {
   var data = array();
   try{
       //first query
       let user_data = await User.find({}).exec();
       data['data1'] = user_data;

       //second query
       let content_data = await Content.find({}).exec();
       data['data2']  = content_data;

       return res.status(200).json(data)
   }
   catch(err){
       return res.status(400).json({err})
   }
});
0 голосов
/ 13 февраля 2020

Вам нужно дождаться ответа на ваш вызов базы данных. Таким образом, вы можете использовать обещание для этого. MDN: Обещание Сделайте обещание вызова базы данных и разрешите его после получения данных из базы данных. Promise.all будет ждать, пока оба ваших обещания не будут решены. MDN: Promise.all ()

router.get('/userlist', function(req, res) {
  var data = [];
  let promise1 =  new Promise((resolve, reject) => {
    User.find({},function (err, docs) {
      data['data1'] = docs;
      resolve();
    })
  });

  let promise2 =  new Promise((resolve, reject) => {
    Content.find({},function (err, docs) {
      data['data2']  = docs
    })
  });

  Promise.all([promise1, promise2]).then(result => res.json(docs))
});
0 голосов
/ 13 февраля 2020

Мой вопрос: что вам мешает? Да, ты можешь это сделать. Я делал такие работы.

Осталось два момента.

Если вам нужно выполнить несколько запросов, основываясь на ответе предыдущего запроса, вы можете использовать async/await или promises. Если вы не хотите попробовать это, есть способ. Вы можете проверить ответ на предыдущий запрос, задать условия и, если нужно, выполнить второй. И, таким образом, вы можете составить цепочку запросов.

И если вам не нужно полагаться на ответы, делайте что хотите. В этом нет ничего плохого ...

Счастливого кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...