Node.js 使用sequelize初始化postgres db

Node.js 使用sequelize初始化postgres db,node.js,sequelize.js,Node.js,Sequelize.js,我正在编写一个命令行实用程序来初始化postgres数据库,方法是删除所有表,创建postgis扩展,然后初始化我的模型 需要创建扩展,因为我的模型依赖于它 我想知道做这件事的方法。例如,我会在播种机中这样做,然后调用sequelize db:seed吗 SQL如下所示: -- Drop all tables drop schema public cascade; create schema public; -- Add PostGIS support CREATE EXTENSION pos

我正在编写一个命令行实用程序来初始化postgres数据库,方法是删除所有表,创建postgis扩展,然后初始化我的模型

需要创建扩展,因为我的模型依赖于它

我想知道做这件事的方法。例如,我会在播种机中这样做,然后调用sequelize db:seed吗

SQL如下所示:

-- Drop all tables
drop schema public cascade;
create schema public;

-- Add PostGIS support
CREATE EXTENSION postgis;

//编辑:重读你的问题,我发现我错过了Sequelize方法的明确要求——下面的内容可能会有所帮助,但可能并不相关

我在自己开发的应用程序中解决了这个问题。下面最简单的解决方案是一个shell脚本,其中包含用于Sequelize调用的JS脚本。在其他应用程序中,我使用了许多Python类和一些JS脚本。这很粗糙,但很灵活,而且行之有效

run.sh:

填充-db.js:

#!/bin/bash

DB_NAME="sqpg"
DB_USER="sequelize"
DB_PW="sequelize"
DB_SCHEMA="s00"
export BLUEBIRD_DEBUG=1

sudo -u postgres psql -c "DROP SCHEMA IF EXISTS $DB_SCHEMA CASCADE" "$DB_NAME"
sudo -u postgres psql -c "CREATE SCHEMA $DB_SCHEMA AUTHORIZATION $DB_USER;" "$DB_NAME"
sudo -u postgres psql -c "CREATE EXTENSION \"uuid-ossp\" SCHEMA $DB_SCHEMA;" "$DB_NAME"

node populate-db.js
'use strict';

var Sequelize = require('sequelize');

sq_options = { /* ... */ };
var sq = new Sequelize('sqpg', 'sequelize', 'sequelize', sq_options);

var models = {
  Foo: sq.define('Foo', {
    /* ... * /
  },
  Bar: sq.define('Bar', {
    /* ... */
  }
};

models.Foo.belongsToMany(models.Bar, { through: 'foo_bar' });
models.Bar.belongsToMany(models.Foo, { through: 'foo_bar' });

sq.sync({ force: true })
.then(a_function_to_create_some_instances)
.then(a_function_to_create_some_more_instances)
.catch(function(err) {
  console.warn('Rejected promise: ' + err);
  console.warn(err.stack);
})
.finally(function() {
  sq.close();
})