Я пытаюсь получить данные из документа в RethinkDB в NodeJS и передать результат в переменную, которую я хочу использовать в файле шаблона, но это всегда undefined
, когда я пытаюсь напечатать переменную data
как #{data}
(я использую pug / jade), потому что это асинхронный вызов (я думаю).
'use strict';
var r = require('rethinkdb');
module.exports = function IndexModel() {
data: {
r.connect({host: '127.0.0.1', port: 28015}, function(err, conn) {
r.db('mydb').table('mytable').run(conn).then(function(cursor) {
cursor.toArray(function(err, result) {
if (err) throw err;
return JSON.stringify(result, null, 2);
});
});
});
}
};
Я подумал, что это должно быть потому, что nodejs хочет, чтобы это был объект, поэтому я попытался разобрать его как JSON.parse(JSON.stringify(result, null, 2))
, но это выдает ту же ошибку.
Когда я делаю console.log(JSON.stringify(result, null, 2))
, он печатает после ошибки.
[
{
"id": "307ad5e9-a0db-461b-a564-081d73f9b34f",
"title": "hello"
}
]
Это точная ошибка, если она необходима:
Cannot read property 'length' of undefined
at eval (eval at wrap (C:\Users\Me\Project\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:248:32)
at eval (eval at wrap (C:\Users\Me\Project\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:379:4)
at template (eval at wrap (C:\Users\Me\Project\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:389:211)
at Object.exports.renderFile (C:\Users\Me\Project\node_modules\pug\lib\index.js:427:38)
at Object.exports.renderFile (C:\Users\Me\Project\node_modules\pug\lib\index.js:417:21)
at View.exports.__express [as engine] (C:\Users\Me\Project\node_modules\pug\lib\index.js:464:11)
at C:\Users\Me\Project\node_modules\engine-munger\index.js:133:22
at C:\Users\Me\Project\node_modules\engine-munger\index.js:154:17
at C:\Users\Me\Project\node_modules\engine-munger\index.js:87:21
at C:\Users\Me\Project\node_modules\engine-munger\index.js:189:13
at FSReqWrap.oncomplete (fs.js:153:5)
Есть идеи, как мне решить эту вечную проблему? Спасибо!
Edit:
Похоже, что я не могу ничего вернуть из переменной data
внутри какого-либо соединения rethinkdb или обещания, оно должно быть вне его, чтобы быть обнаруженным.