代码之家  ›  专栏  ›  技术社区  ›  SyNC

在vuejs中导入sequelize模型

  •  1
  • SyNC  · 技术社区  · 6 年前

    我正在使用electron+vuejs+sequelize构建一个CRUD应用程序,我使用了 sequelize初始化 并配置 .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: {}
    };
    

    谢谢

    编辑:

    我发现问题出在模型/索引中。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 回复  |  直到 6 年前
        1
  •  1
  •   SyNC    6 年前

    我通过更改来修复 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);
      }
    }
    

    在模型/索引中。js文件。