Здравствуйте. Есть файл DataBaseUtils.js а в нем есть функция:
export function listNotes() {
couch.get(dbName, viewUrl).then(
(data, headers, status) => {
console.log('Data was get!');
return data.data.rows;
},
(err) => {
console.log("Error in DataBaseUtils.js with listNotes()");
return err;
}
);
};
Так же есть файл app.js в котором эта функция вызываеться следующим образом:
import * as db from 'utils/DataBaseUtils.js';
app.get('/notes', (req, res) => {
db.listNotes().then(data => res.send(data));
});
Но при загрузке получаю следующее:
Server is up and running on port 8079
TypeError: Cannot read property 'then' of undefined
at /Users/macuser/web/Notes/notes-app/server/app.js:13:17
at Layer.handle [as handle_request] (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/layer.js:95:5)
at /Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/index.js:335:12)
at next (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/Users/macuser/web/Notes/notes-app/node_modules/body-parser/lib/types/json.js:109:7)
at Layer.handle [as handle_request] (/Users/macuser/web/Notes/notes-app/node_modules/express/lib/router/layer.js:95:5)
Data was get!
То есть функция работает. Потому что в последней строке написано Data was get!, но return не сработал.
При этом если внутри listNotes() заместо return data.data.rows написать console.log(data.data.rows); а потом в app.js вызвать функцию db.listNotes() то в консоль все данные из БД приходят.
Так же если в app.js написать так:
let data = db.listNotes();
console.log(data);
То в консоль приходит:
Server is up and running on port 8079
undefined
Data was get!
Вопрос: как мне получить из listNotes() данные, и почему я получаю underfind если в listNotes() они приходят?
Решение!
Спасибо @Grundy
Надо было просто добавить еще один return в listNotes() вот так:
export function listNotes() {
return couch.get(dbName, viewUrl).then(....
return. – Grundy Feb 24 '18 at 20:00listNotes()аreturnтам целых два, один с данными, а другой с ошибками – Paul Pak Feb 24 '18 at 20:02listNotesу тебя нет ни одногоreturn– Grundy Feb 24 '18 at 20:04