【问题标题】:Import sequelize model in vuejs在 vuejs 中导入 sequelize 模型
【发布时间】:2018-04-25 18:43:23
【问题描述】:

我正在使用 electron + vuejs + sequelize 构建一个 CRUD 应用程序,我使用了 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')
}

现在我正在尝试使用数据库中的数据填充表,我尝试以多种方式导入模型,但总是导致错误。

错误:未捕获的类型错误:路径必须是字符串。收到未定义

组件:

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: {}
};

谢谢。

编辑:

我发现了问题,在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;

【问题讨论】:

  • 我猜你需要require('../../../database/models')(或require('../../database/models') )——单点在那里不起作用
  • 是的,我没有使用 ./,我添加了 ./ 以防万一。但是路径是正确的。
  • 从我一直在阅读的内容来看,这样的事情应该可以工作const User = require("../../database/models").User,但我不知道为什么它一直给我这个错误

标签: vue.js electron sequelize.js


【解决方案1】:

我通过将 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);
  }
}

在模型/index.js 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-30
    • 2020-10-14
    • 2021-09-09
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多