2012-05-14 4 views
3

Я только начал работать с Node.js, поэтому, пожалуйста, простите любую глупость !!! Я пытаюсь создать новое приложение с помощью Node.js. Im с использованием структуры Express с базой данных Postgresql. Проблема в том, что, на мой взгляд, я хотел вызвать функцию. Поэтому я использовал вспомогательную функцию, которая вызывается из моего файла jade. Но поскольку эта функция обращается к базе данных, я попытался использовать callback inorder, чтобы заставить ее работать.Вызов вспомогательной функции с обратным вызовом из шаблона Jade

Однако я не могу назвать функцию из моего шаблона нефрита с последним аргументом как функцией. Вспомогательная функция работала нормально, когда передавался только один параметр, и она не была функцией обратного вызова. Но поскольку запрос базы данных занял некоторое время, данные никогда не отображались. Но когда я пытаюсь вызвать функцию с обратным вызовом из моего шаблона jade, я получаю синтаксическую ошибку.

Мой вызов функции в шаблоне нефрита:

#{ nameAndVersion(result.bu_entrep_id, function(error, result)) } 

Моя вспомогательная функция (Это просто потому, что я пытался заставить его работать):

exports.helpers= { 
nameAndVersion: function(entid, callback) { 
var x=1; 
    callback(null, x); 
    console.log(1); 
} 
}; 

Моя ошибка:

500 SyntaxError: Unexpected token) 

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

+0

Я хочу показать на своей веб-странице данные, которые возвращаются во втором параметре, «результат». И я пробовал писать так, и это все равно дало мне ту же ошибку. Мой код выглядит следующим образом: function (error, result) {console.log (result.rows [0]); } – learnrubyonrails

ответ

3

Вы хотите сделать: шаблон

  1. Анализировать
  2. Получить данные
  3. Рендер шаблона с данными

Экспресс шаблонный, как ожидается, сделать:

  1. Получение данных
  2. Разбор и делают данные

Вы не должны выполнять Complexe код, как только вы начали рендеринга (что делать, если база данных недоступна?).

Помощники нефрита имеют только цель формирования, а не функцию.

Что вы должны делать, вместо вызова помощника, предоставить необходимые данные при вызове средства визуализации.

app.get('anyPage', function(req, res) { 
    database.doSomeDataBaseQuery(/* Data base callback */ function(data, err) { 
    if(!err) res.render('pageTemplate', {dataBaseData:data}); 
    } 
}); 
Смежные вопросы