Node.js 使用sequelize初始化postgres db
我正在编写一个命令行实用程序来初始化postgres数据库,方法是删除所有表,创建postgis扩展,然后初始化我的模型 需要创建扩展,因为我的模型依赖于它 我想知道做这件事的方法。例如,我会在播种机中这样做,然后调用sequelize db:seed吗 SQL如下所示: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
-- 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();
})