Я использую экспресс-руль для проекта.
Мы хотим поместить все языковые строки в базу данных Firebird следующим образом:
---------------------------------
| ID | CODE | LANG | STRING |
---------------------------------
| 1 | HELLO | dut | Hallo. |
---------------------------------
| 2 | HELLO | fre | Bonjour. |
---------------------------------
| 3 | HELLO | eng | Hello. |
---------------------------------
...
Я сделал функцию переводчика, которая выбирает строку в соответствии с переданным КОДОМ и языком, конечно, это асинхронный вызов.
Я определяю помощника следующим образом:
app.engine('handlebars', exphbs({
defaultLayout: 'portal',
helpers: {
translate: function(language,code) {
dbfunctions.getDictionaryString(pool,code,language,function(translation,error) {
if (error) {
console.log('Error translating code ' + code + ' for language ' + language + '.')
return '[' + code + ' | '+ language + ']'
} else if (translation) {
console.log(translation) //this logs the correct database string
return translation
}
})
}
}
})
)
В своем файле home.handlebars я пишу следующий код:
<h1>{{{translate session.language 'HELLO' }}}</h1>
Возвращает пустое значение, однако записывается правильная строка, которую он должен вернуть.
Я прочитал, что руль не поддерживает асинхронные функции. Любой совет по решению этой проблемы?