我有一个sequelize 表,其中没有当前主键作为ID。我目前不确定为什么 id 主键没有呈现。我尝试强制 id 主键和自动增量。
有谁知道我该如何解决这个问题。
这就是我当前的表格:
colabdesk=# \d users;
Table "public.users"
Column | Type | Collation | Nullable | Default
------------+--------------------------+-----------+----------+---------
id | integer | | not null |
username | character varying(255) | | |
password | character varying(255) | | |
email | character varying(255) | | |
first_name | character varying(255) | | |
last_name | character varying(255) | | |
DATE | timestamp with time zone | | not null |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"users_email_key" UNIQUE CONSTRAINT, btree (email)
"users_username_key" UNIQUE CONSTRAINT, btree (username)
Referenced by:
TABLE "details" CONSTRAINT "details_userId_fkey" FOREIGN KEY ("userId") REFERENCES users(id) ON UPDATE CASCADE ON DELETE SET NULL
TABLE "profiles" CONSTRAINT "profiles_userId_fkey" FOREIGN KEY ("userId") REFERENCES users(id) ON UPDATE CASCADE ON DELETE SET NULL
colabdesk=#
这就是我的 Sequulize 表设计的样子:
const seq = require('sequelize');
const { postgres } = require('../index');
const permissions = [['Admin', 'Staff', 'User']];
const User = postgres.define(
"user",
{
username: {type: seq.STRING, unique: true, require: true,
validate: {isAlphanumeric: true, len: [8,16]}
},
password: {type: seq.STRING, require: true,
validate: {len: [8, 18]}
},
email: {type: seq.STRING, unique: true, require: true,
validate: {isEmail: true}
},
first_name: {type: seq.STRING, require: true,
validate: {isAlpha: true}
},
last_name: {type: seq.STRING, require: true,
validate: {isAlpha: true,}
},
permission: {type: seq.STRING, require: true,
validate: {isAlpha: true, isIn: permissions}
},
renter: {type: seq.BOOLEAN, require: true, defaultValue: 0,
validate: {isIn: [['0', '1']], isInt: true}
},
rentee: {type: seq.BOOLEAN, require: true, defaultValue: 0,
validate: {isIn: [['0', '1']], isInt: true}
},
},
{
createdAt: seq.DATE,
updatedAt: seq.DATE,
}
);
postgres.sync()
.then(() => {
console.log("User table is connected and synced")
})
.catch((err) => {
console.log("Error syncing the User table: " + JSON.stringify(err))
})
module.exports.User = User;
有谁知道如何解决这个问题
更新
请求如下所示:
{
"username": "omarjandali",
"password": "password",
"email": "omar@admin.com",
"first_name": "omar",
"last_name": "jandali",
"permission": "Admin",
"renter": "1",
"rentee": "0"
}
最佳答案
看起来该表是创建为
create table users( id integer, ...) --which would not auto-increment
as opposed to
create table users( id serial, ...) --which would auto-increment.
如果没有数据,删除并重新创建表可能同样容易。您也可以尝试
create sequence users_id_seq
increment 1
minvalue 1
maxvalue 99999999999999999
start 1;
alter table users alter column id set default nextval('users_id_seq'::regclass);
如果表中有数据,您将必须调整序列的起始值。
关于mysql - 主键未与我的 Sequelize 表一起生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57735463/