测试完这段代码后,我对我的表被创建感到困惑。我本以为调用 .sync 方法时不会连接。 sync() 方法是否以某种方式等待连接建立?
var Sequelize = require('sequelize');
var chalk = require('chalk');
var sequelize = new Sequelize('postgres://localhost/nfldb');
sequelize.define('team', {
name: Sequelize.STRING
});
sequelize.authenticate()
.then(function(){
console.log(chalk.green('connected to database ' + sequelize.config.database));
})
.catch(function(er){
console.log(chalk.red(er.message));
});
sync();
function sync(){
sequelize.sync({force: true})
.then(function(){
console.log(chalk.green('database has been synced'));
})
.catch(function(){
console.log(chalk.red('unable to sync database'));
});
}
是的,
sync
会自动请求连接到数据库。 authenticate
旨在用于检查您是否可以在不执行实际查询的情况下连接到数据库 - 据我记得它是SELECT 1 + 1
。不需要调用authenticate
,它只是作为一种方便的方法。
如果您使用了 .sync 那么就不需要调用 . authenticate , .sync() 在底层调用 .authenticate()