Передача экземпляра модели sequelize в службу не работает в express. js - PullRequest
0 голосов
/ 21 июня 2020

Я хочу получить доступ к функции findById CRUDService в ItemService. Я получаю ответ от функции readAll, но не получаю от findById. Я думаю, что объект dao, который я передаю CRUDService из ItemService через конструктор, не работает. Я новичок в node js и express js. Не могли бы вы мне помочь?

1 Ответ

0 голосов
/ 22 июня 2020

Вам необходимо передать экземпляр вашего ItemDAO суперконструктору.

const CRUDService = require('../common/crud.service.js');
const ItemDAO = require('./item.dao.js');
class ItemService extends CRUDService{

  constructor() {
    super(new ItemDAO()); // ---> here
  }

  readAll = () => {
    const rows = this.readAll();
    return rows;
  };
}

module.exports = ItemService

Также необходимо изменить вашу службу.

class CRUDService{

  constructor(dao) {
    this.dao = dao;
  }

  readAll = () => this.dao.findAll().then(rows => rows);

  findById = (rowId) => this.dao.findByPk(rowId).then(row => row);
}

Также помните, что эти методы возвращают обещания поэтому лучше использовать .then() или async/await.

...