0

Здравствуйте. Есть файл 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(....
Paul Pak
  • 111
  • забыл return. – Grundy Feb 24 '18 at 20:00
  • Где я его забыл? Просто данные возвращает listNotes() а return там целых два, один с данными, а другой с ошибками – Paul Pak Feb 24 '18 at 20:02
  • 1
    Смотри вопрос дубликат, там та же самая ошибка. внутри функции listNotes у тебя нет ни одного return – Grundy Feb 24 '18 at 20:04
  • Спасибо, проблема решена. – Paul Pak Feb 24 '18 at 20:07

0 Answers0