aiz*_*haj 5 sql postgresql uuid sequelize.js
我正在学习使用 Sequelize 来使用 PostgreSQL 数据库。以下所有事情都发生在开发人员身上。环境。当手动尝试将数据插入到我的表中以检查是否通过 Sequelize 正确设置、检查失败的单元测试等时,会发生这种情况。
我用 Sequelize 模型制作了两个表:用户和发布。这两个表都生成 UUIDv4。我已经关联了用户hasMany出版物和出版物belongsTo用户(您可以参考额外信息)。
在我的psqlshell 上,我已将以下记录插入到我的 User 表中(为简洁起见,删除了其余数据):
| id | firstName | lastName | ..|
|----------------------------------------|------------|-----------|---|
| 8c878e6f-ee13-4a37-a208-7510c2638944 | Aiz | .... |...|
Run Code Online (Sandbox Code Playgroud)
现在,我尝试在引用上面新创建的用户时将记录插入到我的发布表中。这是我在 shell 中输入的内容:
INSERT INTO "Publications"("title", "fileLocation", ..., "userId")VALUES('How to Pasta', 'www.pasta.com', ..., 8c878e6f-ee13-4a37-a208-7510c2638944);
Run Code Online (Sandbox Code Playgroud)
它失败了,我收到以下错误:
ERROR: syntax error at or near "c878e6f"
LINE 1: ...8c878e6f-ee...
Run Code Online (Sandbox Code Playgroud)
(它指向第 1 行引用中终端上的第二个字符 - 'c')。
这是怎么回事?如果我们想在 psql 中手动输入 UUID,我们是否应该以另一种方式输入 UUID?我们是否将引用的 UUID 粘贴为字符串?我自己的研究中是否缺少正确的方法?
从我的模型来看:
Publication.associate = function(models) {
// associations can be defined here
Publication.belongsTo(models.User, {
foreignKey: "userId"
});
};
Run Code Online (Sandbox Code Playgroud)
和
User.associate = function(models) {
// associations can be defined here
User.hasMany(models.Publication, {
foreignKey: "userId",
as: "publications"
});
};
Run Code Online (Sandbox Code Playgroud)
这是我userId在出版物中的定义:
userId: {
type: DataTypes.UUID,
references: {
model: "User",
key: "id",
as: "userId"
}
}
Run Code Online (Sandbox Code Playgroud)
如果它有价值的话,我id在两个模型上的 (primaryKey) 都是type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4(我不知道这是否是一个问题)。
将你的 uuid 用撇号括起来(将其写为字符串),pg 会将其转换为 uuid
以 {} 开头和结尾的字符串是可选的
例如
INSERT INTO "Publications"("title", "fileLocation", ..., "userId")VALUES('How to Pasta', 'www.pasta.com', ..., '8c878e6f-ee13-4a37-a208-7510c2638944');
Run Code Online (Sandbox Code Playgroud)
或者
INSERT INTO "Publications"("title", "fileLocation", ..., "userId")VALUES('How to Pasta', 'www.pasta.com', ..., '{8c878e6f-ee13-4a37-a208-7510c2638944}');
Run Code Online (Sandbox Code Playgroud)
来源(我不怎么做 pgsql,所以我找了另一个写了一些工作 pgsql 的人。如果这对你不起作用,请告诉我,我将删除答案):PostgreSQL 9.3: How to insert upper将 UUID 写入表中
| 归档时间: |
|
| 查看次数: |
13796 次 |
| 最近记录: |