nuxt.js & daisyUI & DrizzleORM & PlanetScale初探

nuxt.js & daisyUI & DrizzleORM & PlanetScale初探

太困难了,nuxt3好奇怪,数据库也连不上,暂时放弃了

过段时间换一个数据库用用,比如说vercel的postgres

2023/6/10已换vercel,好用,可能planetscale用错了之前,下次再试一下

next.js

  • react
  • webpack

nuxt.js

  • vue
  • vite

一大问题是我不太会sql,得摸着石头过河了,先想想数据结构应该是什么样的

Article Table Id Link Title Date

Comment Table Id Article Id Content Reply Comment Id


索引:在comment表中创建适当的索引,以加快对评论的查询速度。例如,可以在article_id列上创建索引,以便根据文章快速检索相关评论。

数据库分区:根据需要,可以考虑对comment表进行水平分区。这意味着将comment表分成多个独立的分区,每个分区存储特定范围的评论。这样可以将数据分散到不同的物理存储设备上,提高查询性能。

maybe i should use nosql for this app? No, I will practice sql!


CREATE TABLE Article ( id INT PRIMARY KEY, link VARCHAR(255), date DATE, title VARCHAR(255) );

CREATE TABLE comment ( id INT PRIMARY KEY, article_id INT, content TEXT, parent_id INT, reply_comment_ids VARCHAR(255), user_id INT, vote INT );


如果你希望实现父评论跟踪其所有子评论的关系,可以考虑以下两种常用的方法:

嵌套集模型(Nested Set Model):该模型使用左右值(Left and Right Values)来表示层次结构。每个评论都有一个左值和一个右值,用于定义它在树形结构中的位置。通过使用左右值,可以轻松地查询父评论及其所有子评论。这种模型对于频繁的读取操作非常高效,但对于频繁的写入和更新操作可能会复杂一些。

this is not good for this project i think


first i will get all article_id comment

then i need to get the real nested order

the most expensive thing is update the order


ALTER TABLE comment ADD COLUMN user_id INT; ADD COLUMN vote INT;


不用nuxt content,用vercel的情况下的坏处

  • 要连db
  • 其他人无法通过pr来贡献项目
  • 连接数据库的api设计需要注意,暴露api接口给图谋不轨的人将导致数据库坏掉
  • 紧接着上面一条,解决方法是增加用户认证,又是非常麻烦的

好处:

  • db比markdown可灵活多了
  • 我能够学到很多,如果真的能做出来

不用vercel,用nuxt connect的坏处

  • markdown不灵活,很多功能搞不了(很大的坏处
  • 已经做出来了,没什么新东西,和next contentlayer差不多

好处:

  • 其他人无需登录即可修改内容,只需pr即可