nodejs как сделать несколько запросов - PullRequest
0 голосов
/ 24 августа 2018

Мне нужно знать, как я могу написать свой запрос на многократное удаление. Во-вторых, как я могу поставить асинхронную функцию в моем коде. я хочу удалить кампус и в то же время удалить здания с таким же идентификатором кампуса в JSON

app.delete('/campuses/:id', (req, res)=> {
    const id = req.params.id;
    const details = { 'campusid': new ObjectID(id) };  
    db.db('').collection('buildings').remove(details, (err, result)=> { 
        if (err) {
            res.send({ 'error': 'en error has occured' });
        } else {
            res.send(result);
        }
    });
    const details2 = { '_id': new ObjectID(id) };
    db.db('').collection('campuses').remove(details2, (err, result)=> { 
        if (err) {
            res.send({ 'error': 'en error has occured' });
        } else {
            res.send(result);
        }
    }
    );
})

Ответы [ 4 ]

0 голосов
/ 25 августа 2018

Мне нравится синтаксис асинхронных функций лучше, чем обещаний, но я использую оба в зависимости от ситуации.

Вот пример запуска функций по порядку перед переходом к следующей функции:

async.waterfall([
    function(callback1) {
        //Do some work, then callback
        if (error) {
            callback1(errorGoesHere,null);
        } else {
            callback1(null,successMessageGoesHere);
        }

    }, 
    function(callback2) {
        //Do some work, then callback
        if (error) {
            callback2(errorGoesHere,null);
        } else {
            callback2(null,successMessageGoesHere);
        }
    }
], function (error, success) {
    if (error) { 
        //show an error 
    }
    //all good return the response, etc.
});

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

0 голосов
/ 24 августа 2018

Существует несколько способов сделать асинхронный вызов.

  1. Вы можете использовать обещания.
  2. Асинхронные функции.
  3. Отправка ответа без ожидания других задач.
  4. Если вы хотите сделать параллельные вызовы, вы можете использовать bluebird join function
0 голосов
/ 24 августа 2018

Вы можете удалить, как это.

app.delete('/campuses/:id', async (req, res)=> {
 try {
    const id = req.params.id;
    const details = { 'campusid': new ObjectID(id) };  
    await db.db('').collection('buildings').remove(details);
    const details2 = { '_id': new ObjectID(id) };
    await db.db('').collection('campuses').remove();
    res.send(result);
  } catch(err) {
   return res.json({
                success: false,
                message: 'error'
            });
  }
})
0 голосов
/ 24 августа 2018

Вы можете создавать последовательные функции, когда первая вызывает вторую.Затем вы можете передать переменные в функцию секунд (т.е. идентификатор вашего кампуса).

Это может выглядеть примерно так:

    const Query1 = (res, query) => {
        const request = new sql.Request();
        request.query(query, (err, result) => {
            if (err) {
                return res.json({
                    success: false,
                    message: 'error'
                });
            } else if (result.recordset[0]) {

                let campusID = result.recordset;

                Query2(res, campusID, query = 'SELECT bla bla')

            }
        })
    }

    const Query2 = (res, campusID, query) => {
        const request = new sql.Request();
        request.query(query, (err, result) => {
            if (err) {
                return res.json({
                    success: false,
                    message: 'error'
                });
            } else {

                return res.json({
                    success: true
                });
            }
        })
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...