node.js - PostgreSQL : How to accurately define a schema in a model? 的 Sequelize 架构

标签 node.js postgresql schema sequelize.js database-schema

我在网上搜索过,但无法确定如何向下面的这个 Sequelize 模型添加模式。下面的代码不会回滚错误,但是当我检查 postgres 数据库时,唯一的模式是 public 的默认模式。

// The model definition is done in /path/to/models/project.js
module.exports = function(sequelize, DataTypes) {
  return sequelize.define("project", {
    name: DataTypes.STRING,
    description: DataTypes.TEXT,
  },
    define: {
        schema: "prefix"
    },
    classMethods: {
      method1: function() {},
      method2: function() {}
  },
    instanceMethods: {
      method3: function() {}
  })

应如何修改脚本以准确定义模式?

编辑

就我而言,最终答案是

 database_name.sequelize.createSchema('prefix').then(() => {...});

在我的 ./models/index.js 文件中,数据库对象如下:

database_name = {
    Sequelize: Sequelize,
    sequelize: sq,
    table_1: sq.import(__dirname + '/file_folder')
 };

module.exports = database_name;

最佳答案

您的模型定义应如下所示

module.exports = function(sequelize, DataTypes) {

    return sequelize.define("project", {
        name: DataTypes.STRING,
        description: DataTypes.TEXT,
    }, {
        schema: 'prefix',
        classMethods: {
            method1: function() {},
            method2: function() {}
        },
        instanceMethods: {
            method3: function() {}
        }
    }
}

根据 options 的文档sequelize.define 方法中的对象,它可以具有名为 schema 的属性。

编辑 - 以编程方式创建模式

为了创建新模式(仅适用于 PostgreSQL!),您可以使用 sequelize.createSchema()方法:

sequelize.createSchema('prefix').then(() => {
    // new schema is created
});

上面创建给定的 SQL

CREATE SCHEMA prefix;

为了在模型定义中使用这个模式,你需要在将任何模型同步到数据库之前创建模式 - 它可以在 sequelize.sync() 之前运行,或者,如果你使用迁移, 作为第一个迁移文件。

关于node.js - PostgreSQL : How to accurately define a schema in a model? 的 Sequelize 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42497254/

相关文章:

node.js - 文件更改后 Docker Compose 容器中的 node_modules 为空

javascript - 合并 Node.js 流

sql - 计算其他表中的值

performance - 如何基于PostgreSQL表组织工作池?

mysql - 将架构(通过 .XSD 文件)导入 MySQL 数据库

javascript - 使用 node.js 和 headless 浏览器抓取动态页面

javascript - Reddit Api 尝试通过 snoocore node.js 获取 reddit 自文本时出错

sql - 这些查询是否相同?如果不是如何进行更简单的查询

sql - Illuminate\Support\Fluent 类的对象无法转换为 int

postgresql - 如何在一次操作中更改多个 PostgreSQL 表的模式?