【发布时间】:2018-12-18 10:21:45
【问题描述】:
我开始使用 Sequelize。我正在关注他们在其网站上提供的文档:http://docs.sequelizejs.com/manual/installation/getting-started.html
const Sequelize = require('sequelize');
const sequelize = new Sequelize('haha', 'postgres', 'postgres', {
host: 'localhost',
dialect: 'postgres',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
// SQLite only
storage: 'path/to/database.sqlite'
});
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
const User = sequelize.define('user', {
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
}
});
// force: true will drop the table if it already exists
User.sync({force: true}).then(() => {
// Table created
return User.create({
firstName: 'John',
lastName: 'Hancock'
});
});
直到这里,一切正常。并且表“用户”已正确构建和填充。 (虽然我不明白 Sequelize 会自动将“s”附加到“用户”,任何解释。)
但是,当我添加以下代码部分时:
User.findAll().then(users => {
console.log(users)
})
我得到这个错误:
未处理的拒绝 SequelizeDatabaseError:关系“用户”不 存在
所以我的问题是:
- 为什么 Sequelize 会向用户添加“s”。 (我知道这是有道理的,但开发人员不应该这样决定)
- 是什么导致了这个错误?我按照文档进行了操作,但仍然无效?
【问题讨论】:
-
关于你的第一个问题,根据 sequelizejs 文档:
By default, sequelize will automatically transform all passed model names (first parameter of define) into plural.if you don't want that, set the following: freezeTableName: true,更多信息可以在这里找到:docs.sequelizejs.com/manual/tutorial/models-definition.html
标签: javascript node.js postgresql sequelize.js pgadmin