小编mdo*_*lon的帖子

评论投票数据库结构的最佳实践

我正在开发一个PHP应用程序,它有几个可以评论的对象.每个评论都可以投票,用户可以给它+1或-1(如Digg或Reddit).现在我正计划有一个带有user_id和投票信息的"投票"表,这似乎工作正常.

问题是,每个对象都有数百条注释存储在单独的注释表中.加载评论后,我必须统计选票,然后单独检查每个投票对用户,以确保他们只能投票一次.这可行,但看起来真的是数据库密集型 - 很多只是评论的查询.

是否有一种更简单的方法可以减少数据库密集度?我目前的数据库结构是最好的方法吗?

要更清楚当前的数据库结构:

评论表:

  • 用户身份
  • OBJECT_ID
  • total_votes

投票表:

  • COMMENT_ID
  • 用户身份
  • 投票

最终目标:

  • 允许用户仅使用最少的MySQL查询(每个对象有多个注释)对每个注释只投票一次

php mysql comments voting

7
推荐指数
1
解决办法
2279
查看次数

当 URL 中存在查询参数时,PersistGate 停留在加载状态

我正在使用示例 with-redux-persist 存储库与此处找到的 next.js 配对: https: //github.com/vercel/next.js/tree/canary/examples/with-redux-persist

使用自定义加载组件时,向 URL 添加查询参数(即 )?test=123会导致页面无限期地挂起加载。控制台中没有报告任何错误,并且 redux 状态信息看起来很干净。

这是我_app.js用来测试的:

import { useStore } from '../store'
import { Provider } from 'react-redux'
import { persistStore } from 'redux-persist'
import { PersistGate } from 'redux-persist/integration/react'

export default function App({ Component, pageProps }) {
  const store = useStore(pageProps.initialReduxState)
  const persistor = persistStore(store)

  return (
    <Provider store={store}>
      <PersistGate loading={<div>Loading</div>} persistor={persistor}>
        <Component {...pageProps} />
      </PersistGate>
    </Provider>
  )
}
Run Code Online (Sandbox Code Playgroud)

您可以通过克隆上面的存储库,修改_app.js为上面的样子,使用yarn dev启动服务器,然后最后访问http://localhost:3000/?test=123.

任何有关为什么会发生这种情况的帮助或见解都将受到赞赏!

local-storage react-redux next.js

5
推荐指数
1
解决办法
440
查看次数

标签 统计

comments ×1

local-storage ×1

mysql ×1

next.js ×1

php ×1

react-redux ×1

voting ×1