摆弄你的代码和以下工作。我对Sequalize一无所知,所以不知道它是否应该像这样工作。但它的工作原理:)
posts: [ { body: 'Hello everyone, my name is Timothy.' }, { body: 'Today was a good day.'} ]
你有过:
Posts: [ { body: 'Hello everyone, my name is Timothy.' }, { body: 'Today was a good day.'} ]
你看得到差别吗?
我没有一段时间,但你有一个资本 的 P 强> 我有一个小写字母 的 p 强> 。
输出:
testdb=# select * from users; id | username | password | email | createdAt | updatedAt | deletedAt ----+--------------+------------+--------------------+----------------------------+----------------------------+----------- 1 | Jack Sparrow | plain-text | jacksparrow@msn.nl | 2016-11-17 22:38:06.493+01 | 2016-11-17 22:38:06.493+01 | 2 | Timothy | plain-text | x@msn.nl | 2016-11-17 22:38:06.492+01 | 2016-11-17 22:38:06.492+01 | (2 rows) testdb=# select * from posts; id | body | createdAt | updatedAt | deletedAt | userId ----+-------------------------------------+----------------------------+----------------------------+-----------+-------- 1 | Hello everyone, my name is Timothy. | 2016-11-17 22:38:06.515+01 | 2016-11-17 22:38:06.515+01 | | 2 2 | Today was a good day. | 2016-11-17 22:38:06.515+01 | 2016-11-17 22:38:06.515+01 | | 2 (2 rows)
编辑:我想我知道为什么这必须是小写的。
您将帖子定义如下:
const Post = masterdb.define('post', {
如果你想以自己的方式去做,你必须用资本来定义它 的 P 强> 。
我认为这是你问题的原因,因为我试图将帖子定义为 Post 而关键是 post 然后它也不起作用。只有当定义和密钥相同时才有效。
Post
post
这很奇怪 续集的文档 他们确实像你一样有一个小写字母不规则的字母。难道他们打错了吗?他们还用小写字母定义了“tag” 的 Ť 强> 而不是大写 的 Ť 强> 。
我修改了你的代码,以便它“应该与他们的教程代码一起工作”,但事实并非如此。当我完成提议的更改时它确实有效 - 将定义中的小写字母更改为大写字母。但是,它们在定义标签的方式上确实有一些不同的方式。他们有 var Tag = this.sequelize.definte('tag', { 。
var Tag = this.sequelize.definte('tag', {
而你需要 var Tag = masterdb.define('tag', { 。
var Tag = masterdb.define('tag', {
可能是因为他们的代码也有效 this.sequelize ?
this.sequelize
这是您的代码,其中包含其教程代码的工作版本。我将数据库重命名为testdb并对我更改的相关行发表评论:
const Sequelize = require('sequelize') const masterdb = new Sequelize('testdb', process.env.POSTGRES_USER, process.env.POSTGRES_PASSWORD, { dialect: 'postgres', }) const User = masterdb.define('user', { username: { type: Sequelize.STRING, unique: true, allowNull: false }, password: { type: Sequelize.STRING, allowNull: false }, email: { type: Sequelize.STRING, unique: true, allowNull: false } }, { paranoid: true }) var Tag = masterdb.define('Tag', { //this is 'tag' in their tutorial name: Sequelize.STRING }, { paranoid: true }) User.hasMany(Tag) masterdb.sync({force:true}).then( x => { return Promise.all([ User.create({ username:'Timothy', password:'plain-text', email:'x@msn.nl', Tags: [ { name: 'Alpha'}, { name: 'Beta'} ] }, { include: [ Tag ] }), User.create({ username:'Jack Sparrow', password:'plain-text', email:'jacksparrow@msn.nl' }), ]) }).catch(x => console.log(x))