Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2015, 23:15
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

Вернуть значение mongoose .findOne (NodeJS)
Здравствуйте!

Уже приходилось работать с функциями на базе callback, но раньше не приходилось возвращать значение в начало, и я никак не пойму что тут нужно сделать...

И так есть код
//get translation texto from DB
exports.getLang = getLang = function(page,lang,param){
	console.log('received: '+page+' + '+lang+' + '+param);
	
	return getText(page,lang,param,function(text){
		console.log('text: '+text);
		return text;
	});
};
	
	

function getText(page,lang,param,callback){
	Lang.findOne({page: page, lang: lang, param: param},function(err, lang){
		if(err)
			console.log(err)
		else{
			console.log(lang.trans);
			callback(lang.trans);
		}
	});
}

При запросе :
req.__ = getLang;


Так вот мне нужно получить перевод строки от этой функции :
res.render('index',{titleGen : req.__('home',req.locale,'hello')});


Но я никак не могу заставить это работать...
Что нужно сделать чтобы грамотно возвратить значение?

Последний раз редактировалось blacklool, 28.02.2015 в 04:07.
Ответить с цитированием
  #2 (permalink)  
Старый 28.02.2015, 06:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Функция, выполняющяя действие асинхронно, не может вернуть результат, так как она завершается раньше асинхронного действия.
Используй callback'и. Подобный вопрос появляется на форуме с завидной регулярностью .
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2015, 16:11
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

Сообщение от danik.js Посмотреть сообщение
Функция, выполняющяя действие асинхронно, не может вернуть результат, так как она завершается раньше асинхронного действия.
Используй callback'и. Подобный вопрос появляется на форуме с завидной регулярностью .
danik.js Здравствуйте, да дейтвительно, таки можно вернуть значение, наконец додумался как это сделать, спасибо.

Если кому интерестно;
req.__({page:'home', lang:req.locale, param:'hello'},function(text){
    res.render('index',{titleGen : text });
})

//get translation texto from DB
exports.getLang = getLang = function(params,callback){
	
	console.log('received: '+params.page+' + '+params.lang+' + '+params.param);
	Lang.findOne({page: params.page, lang: params.lang, param: params.param},function(err, lang){
		if(err)
			console.log(err)
		else{
			callback(lang.trans);
		}
	});

}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вернуть значение change Hol1killer jQuery 19 30.09.2013 08:43
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Не получается вернуть в родительское окно значение из нескольких строк javascript_pupil Общие вопросы Javascript 8 28.11.2010 18:14
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45