gpt4 book ai didi

node.js - 使用 sequelize 在 postgres 中存储字符串数组?

转载 作者:行者123 更新时间:2023-12-03 22:33:19 25 4
gpt4 key购买 nike

我目前有一个帖子表和一个用户表。
我的帖子模型:

id: {
type: Sequelize.INTEGER,
},
title: {
type: Sequelize.STRING,
},
images: {
type: Sequelize.STRING,
},
我的用户模型:
id: {
type: Sequelize.INTEGER,
},
name: {
type: Sequelize.STRING,
},
每个用户可以有很多帖子,每个帖子只能有 1 个用户。
协会:
Users.hasMany(Posts, {
foreignKey: "id",
});

Posts.belongsTo(Users, {
foreignKey: "id",
});
在我的帖子表中,图像是一个字符串,用户可以在一个帖子中发布多个图像(因此是图像文件名数组)。
在我的 post 方法中,我使用 JSON.stringify 将图像文件名作为字符串存储在数据库中,因为没有 JSON.stringify 我收到一个错误,说图像不能是对象或数组。经过数小时的研究,我发现在数组上使用 JSON.stringify 不是最佳实践。
如果这是正确的,那么我应该如何使用 sequelize 在 Postgres 中存储我的图像文件名数组?

最佳答案

In my posts table images is a string, a user can post many images in one post (hence an array of filename of images).


对不起,如果我对这个说教,但你应该改正你的邪恶方式,回到规范化关系数据建模的黄金之路。
将关系存储为“外键”数组似乎很直观,但我向您保证,从长远来看,您会受苦:
  • 你不能用约束来强制关系,这会导致不一致
  • 任何通过该关系连接表的尝试都将导致不必要的复杂 SQL 语句,这些语句无法很好地执行和扩展
  • 添加新关系意味着修改(即重写)潜在的大表行

  • 使用“连接表”来模拟这种关系:这样的表由两个外键组成,每个外键都指向一个相关的表。一个条目意味着两个引用的行是相关的。
    如果一张图片只能属于一个帖子,那么解决方案就更简单了:在 images 表中添加一个外键约束。

    关于node.js - 使用 sequelize 在 postgres 中存储字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64746286/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com