Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 设计模式:以何种方式在DB中构造表:将对网站上文章的访问限制为仅订阅用户?_Reactjs_Database_Postgresql_Design Patterns_Permissions - Fatal编程技术网

Reactjs 设计模式:以何种方式在DB中构造表:将对网站上文章的访问限制为仅订阅用户?

Reactjs 设计模式:以何种方式在DB中构造表:将对网站上文章的访问限制为仅订阅用户?,reactjs,database,postgresql,design-patterns,permissions,Reactjs,Database,Postgresql,Design Patterns,Permissions,这是我关于stackoverflow的第一个问题。因此,如果不符合标准,请原谅: 使用的数据库:PostgreSQL v11.2 我正在创建一个react.js应用程序,向登录用户显示文章这些用户可以是: (i) 已订阅其中一个订阅计划的人,或, (ii)只需登录并浏览,但尚未订阅。 (此部分已管理-此处没有问题) 一篇文章可以属于不同的“类别”。 (此部分已管理-这里没有问题) 现在,对于订阅用户,将显示一些普通用户看不到的“类别”文章。 我想创建一个数据库结构,该结构将根据用户是否订阅来处理

这是我关于stackoverflow的第一个问题。因此,如果不符合标准,请原谅:

使用的数据库:PostgreSQL v11.2

我正在创建一个react.js应用程序,向登录用户显示文章这些用户可以是:
(i)
已订阅其中一个订阅计划的人,或,
(ii)只需登录并浏览,但尚未订阅。
(此部分已管理-此处没有问题)

一篇文章可以属于不同的“类别”。
(此部分已管理-这里没有问题)

现在,对于订阅用户,将显示一些普通用户看不到的“类别”文章。

我想创建一个数据库结构,该结构将根据用户是否订阅来处理此可见性。

  • USER
    表列(这很重要):
    身份证,姓名, 已订阅(布尔值)

  • CATEGORY
    表列(这很重要):
    id,类别名称

  • 文章
    表列(这很重要):
    id,标题

  • 物品类别
    表格列:
    id、物品id、类别id

  • 订阅
    表列:
    id、计划名称、价格、说明

如何继续进行?
我还没有构建实现此功能的结构。

什么是更好的方法?

(1)我应该在类别/文章级别进行吗?
例如:“ARTICLE\u CATEGORY”和“ARTICLE”表将包含一个布尔列“subscribers\u only”。


(2)我是否应该维护一个单独的表,将我的订阅计划与类别/文章链接起来?

我的用户模型如下所示:

const User = sequelize.define("user", {
    full_name: { type: DataTypes.STRING },
    email: { type: DataTypes.STRING },
    password: { type: DataTypes.STRING },
    email_verify_token: { type: DataTypes.STRING },
    is_email_verified: { type: DataTypes.BOOLEAN },
    is_subscribed: { type: DataTypes.BOOLEAN },
    ... <many more columns>
  });
const SubscriptionPlan = sequelize.define("subscription_plan", {
    plan_name: { type: DataTypes.INTEGER },
    price: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Subscriber = sequelize.define("subscriber", {
    user_id: { type: DataTypes.INTEGER },
    subscription_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Article = sequelize.define("article", {
    title: { type: DataTypes.STRING },
    url: { type: DataTypes.STRING },
    display_pic: { type: DataTypes.STRING },
    ... <many more columns>
  });
const ArticleCategory = sequelize.define("article_catgeory", {
    article_id: { type: DataTypes.INTEGER },
    category_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const User=sequelize.define(“用户”{
全名:{type:DataTypes.STRING},
电子邮件:{type:DataTypes.STRING},
密码:{type:DataTypes.STRING},
电子邮件\u验证\u令牌:{type:DataTypes.STRING},
电子邮件是否已验证:{type:DataTypes.BOOLEAN},
已订阅:{type:DataTypes.BOOLEAN},
... 
});

我的订阅计划模型如下所示:

const User = sequelize.define("user", {
    full_name: { type: DataTypes.STRING },
    email: { type: DataTypes.STRING },
    password: { type: DataTypes.STRING },
    email_verify_token: { type: DataTypes.STRING },
    is_email_verified: { type: DataTypes.BOOLEAN },
    is_subscribed: { type: DataTypes.BOOLEAN },
    ... <many more columns>
  });
const SubscriptionPlan = sequelize.define("subscription_plan", {
    plan_name: { type: DataTypes.INTEGER },
    price: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Subscriber = sequelize.define("subscriber", {
    user_id: { type: DataTypes.INTEGER },
    subscription_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Article = sequelize.define("article", {
    title: { type: DataTypes.STRING },
    url: { type: DataTypes.STRING },
    display_pic: { type: DataTypes.STRING },
    ... <many more columns>
  });
const ArticleCategory = sequelize.define("article_catgeory", {
    article_id: { type: DataTypes.INTEGER },
    category_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const SubscriptionPlan=sequelize.define(“订阅计划”{
计划名称:{type:DataTypes.INTEGER},
价格:{type:DataTypes.INTEGER}
... 
});

我的订户模型如下所示:

const User = sequelize.define("user", {
    full_name: { type: DataTypes.STRING },
    email: { type: DataTypes.STRING },
    password: { type: DataTypes.STRING },
    email_verify_token: { type: DataTypes.STRING },
    is_email_verified: { type: DataTypes.BOOLEAN },
    is_subscribed: { type: DataTypes.BOOLEAN },
    ... <many more columns>
  });
const SubscriptionPlan = sequelize.define("subscription_plan", {
    plan_name: { type: DataTypes.INTEGER },
    price: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Subscriber = sequelize.define("subscriber", {
    user_id: { type: DataTypes.INTEGER },
    subscription_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Article = sequelize.define("article", {
    title: { type: DataTypes.STRING },
    url: { type: DataTypes.STRING },
    display_pic: { type: DataTypes.STRING },
    ... <many more columns>
  });
const ArticleCategory = sequelize.define("article_catgeory", {
    article_id: { type: DataTypes.INTEGER },
    category_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Subscriber=sequelize.define(“订户”{
用户id:{type:DataTypes.INTEGER},
订阅id:{type:DataTypes.INTEGER}
... 
});

我的ARICLE模型如下所示:

const User = sequelize.define("user", {
    full_name: { type: DataTypes.STRING },
    email: { type: DataTypes.STRING },
    password: { type: DataTypes.STRING },
    email_verify_token: { type: DataTypes.STRING },
    is_email_verified: { type: DataTypes.BOOLEAN },
    is_subscribed: { type: DataTypes.BOOLEAN },
    ... <many more columns>
  });
const SubscriptionPlan = sequelize.define("subscription_plan", {
    plan_name: { type: DataTypes.INTEGER },
    price: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Subscriber = sequelize.define("subscriber", {
    user_id: { type: DataTypes.INTEGER },
    subscription_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Article = sequelize.define("article", {
    title: { type: DataTypes.STRING },
    url: { type: DataTypes.STRING },
    display_pic: { type: DataTypes.STRING },
    ... <many more columns>
  });
const ArticleCategory = sequelize.define("article_catgeory", {
    article_id: { type: DataTypes.INTEGER },
    category_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Article=sequelize.define(“Article”{
标题:{type:DataTypes.STRING},
url:{type:DataTypes.STRING},
显示图片:{type:DataTypes.STRING},
... 
});

我的ARICLE_类别模型如下所示:

const User = sequelize.define("user", {
    full_name: { type: DataTypes.STRING },
    email: { type: DataTypes.STRING },
    password: { type: DataTypes.STRING },
    email_verify_token: { type: DataTypes.STRING },
    is_email_verified: { type: DataTypes.BOOLEAN },
    is_subscribed: { type: DataTypes.BOOLEAN },
    ... <many more columns>
  });
const SubscriptionPlan = sequelize.define("subscription_plan", {
    plan_name: { type: DataTypes.INTEGER },
    price: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Subscriber = sequelize.define("subscriber", {
    user_id: { type: DataTypes.INTEGER },
    subscription_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const Article = sequelize.define("article", {
    title: { type: DataTypes.STRING },
    url: { type: DataTypes.STRING },
    display_pic: { type: DataTypes.STRING },
    ... <many more columns>
  });
const ArticleCategory = sequelize.define("article_catgeory", {
    article_id: { type: DataTypes.INTEGER },
    category_id: { type: DataTypes.INTEGER }
    ... <many more columns>
  });
const articleCegory=sequelize.define(“article_catgeory”{
项目id:{type:DataTypes.INTEGER},
类别id:{type:DataTypes.INTEGER}
... 
});

您需要给我们一个您尝试过的示例,并展示与此问题相关的任何代码/工作。另外,您只需说“数据库”。哪个数据库,哪个版本。@evilfish为之前的不完整数据道歉。数据库:postgresv11。2@evilfish此外,我还更新了问题的“什么应该是更好的方法”部分。我没有写任何代码来实现这个特殊的东西。我必须建立我的数据库结构,在那个阶段,在拥有一个完整的数据库之前,我自己就有这种怀疑。我想知道我应该采用什么方法来构建DB结构。任何帮助都会很好。您需要给我们一个您尝试过的示例,并显示与此问题相关的任何代码/工作。另外,您只需说“数据库”。哪个数据库,哪个版本。@evilfish为之前的不完整数据道歉。数据库:postgresv11。2@evilfish此外,我还更新了问题的“什么应该是更好的方法”部分。我没有写任何代码来实现这个特殊的东西。我必须建立我的数据库结构,在那个阶段,在拥有一个完整的数据库之前,我自己就有这种怀疑。我想知道我应该采用什么方法来构建DB结构。任何帮助都会很好。