Передача нескольких значений на мой взгляд из mssql db

1

В настоящее время у меня есть рабочий код для запроса моего db и передачи значений в представление в узле.

router.get('/', function(req, res, next) {
  sql.connect(config).then(() => {
    return sql.query'select Project_Type_Desc from Project_Type';
  }).then(result => {
    res.render('newProject', {projects: result});
  }).catch(err => {
    console.log(err);
  })
});

Однако может ли кто-нибудь показать мне, как запросить еще 4 таблицы и передать все эти значения на мой взгляд, пожалуйста?

Теги:
express

2 ответа

2

Вы можете сделать Promise цепь с помощью async/ await в Node v7+:

router.get('/', async (req, res, next) => {
  await sql.connect(config)

  try {
    const projects = await sql.query('select Project_Type_Desc from Project_Type')
    const result2 = await sql.query('another query')
    const result2 = await sql.query('another query')
    const result4 = await sql.query('another query')

    res.render('newProject', {
      projects,
      result2,
      result3,
      result4
    })
  } catch (error) {
    console.log(error)
  }
})

Для одновременного запуска Promises используйте Promise.all:

router.get('/', async (req, res, next) => {
  await sql.connect(config)

  const promises =  Promise.all([
    await sql.query('select Project_Type_Desc from Project_Type'),
    const result2 = await sql.query('another query'),
    const result2 = await sql.query('another query'),
    const result4 = await sql.query('another query')
  ])

  try {
    const [projects, result2, result3, result4] = await promises

    res.render('newProject', {
      projects,
      result2,
      result3,
      result4
    })
  } catch (error) {
    console.log(error)
  }
})
  • 0
    я попробовал первый подход и получил следующую ошибку: pastebin.com/Uwn4A8rC вы думаете, что это может быть? я использую модуль узла mssql для соединения с сервером mssql
1

Каждый запрос возвращает обещание. Чтобы запускать все одновременно, вы можете использовать Promise.all(), который вызовет ответ, когда все они вернутся. Например:

sql.connect(config)
    .then(() => {
        const projectPromise = sql.query'select Project_Type_Desc from Project_Type'
        const otherTablePromise = ...
        const anotherTablePromise = ...
        return Promise.all(
            projectPromise,
            otherTablePromise,
            anotherTablePromise
        )
    })
    .then(([projectResult, otherResult, anotherResult]) =>
        res.render('newProject', {projects: result})
    )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню