Импортировать секвелизированную модель в vuejs - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю приложение CRUD, используя Electron + VueJS + Sequelize, я использовал Sequelize init и настроил .sequelizerc , как показано ниже

const path = require('path');

module.exports = {
  'config': path.resolve('src/renderer/database/config', 'config.json'),
  'models-path': path.resolve('src/renderer/database', 'models'),
  'seeders-path': path.resolve('src/renderer/database', 'seeders'),
  'migrations-path': path.resolve('src/renderer/database', 'migrations')
}

Теперь я пытаюсь заполнить таблицу данными из базы данных, я пытался импортировать модели разными способами, всегда приводя к ошибкам.

Ошибка: Uncaught TypeError: путь должен быть строкой. Получено не определено

Компонент:

var models = require('./../../database/models'); // LINE WITH ERROR

export default {
  name: "user-index",
  data: function() {
    return {
      users: []
    };
  },
  created: function() {
    models.Users.findAll().then(users => {
      //
    });
  },
  components: {},
  methods: {}
};

Спасибо.

EDIT:

Я нашел проблему, она находится в models / index.js:

'use strict';

var fs        = require('fs');
var path      = require('path');
var Sequelize = require('sequelize');
var basename  = path.basename(__filename);
var env       = process.env.NODE_ENV || 'development';
var config    = require(__dirname + '/../config/config.json')[env];
var db        = {};

if (config.use_env_variable) {
  var sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  var sequelize = new Sequelize(config.database, config.username, config.password, config);
}

fs
  .readdirSync(__dirname)
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    var model = sequelize['import'](path.join(__dirname, file)); // THIS LINE
    db[model.name] = model;
  });

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

1 Ответ

0 голосов
/ 14 мая 2018

Я исправил, изменив path.join на path.resolve и изменив это:

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

на

for (var modelName in db) {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
}

в файле models / index.js.

...