如何在express中添加和存储页面的视图计数
我有一个新闻网站,有一些类别(商业、娱乐、体育等),我想在首页显示数据库中所有文章的热门文章列表 为了做到这一点,我必须知道哪篇文章最受欢迎或浏览量最大,所以我需要对每篇文章进行浏览(访问)计数 当点击一篇文章时,我通过使用其id调用api请求来获取文章的数据,那么这是否意味着我所要做的就是计算每个id的api调用次数 我在客户端使用react和redux,在服务器上使用express,在数据库中使用带有knex和bookshelf的postgresql。 这是我在express中获取文章的代码:如何在express中添加和存储页面的视图计数,express,reactjs,bookshelf.js,knex.js,Express,Reactjs,Bookshelf.js,Knex.js,我有一个新闻网站,有一些类别(商业、娱乐、体育等),我想在首页显示数据库中所有文章的热门文章列表 为了做到这一点,我必须知道哪篇文章最受欢迎或浏览量最大,所以我需要对每篇文章进行浏览(访问)计数 当点击一篇文章时,我通过使用其id调用api请求来获取文章的数据,那么这是否意味着我所要做的就是计算每个id的api调用次数 我在客户端使用react和redux,在服务器上使用express,在数据库中使用带有knex和bookshelf的postgresql。 这是我在express中获取文章的代码
router.get('/:id', (req, res) => {
Article.query({
where: {id: req.params.id}
}).fetch().then(article => {
res.json(article)
})
})
如何将视图或请求计数添加到该列表中?或者其他方式?您可以依赖knex查询生成器,因为Bookshelf使用它:
router.get('/:id', (req, res) => {
Article.query({
where: {id: req.params.id}
}).fetch().then(article => {
res.json(article)
}).then(ret => {
return knex.raw("update articleview set artcount = artcount + 1 where article_id = :id",{id:req.params.id}))
})
})
您所需要的只是在路由器上要求()以与要求模型相同的方式使用生成器
用户只需使用查询生成器,但您所需要的只是以与您可以公开模型(即导出模型)相同的方式公开他,或者通过映射器访问模型
另外,如果您正在使用,您可以要求knexfile.js配置文件。因为您有knex,所以可以发出knex.raw更新表,该表的唯一目的是计算访问次数。像knex.raw(“更新articleview set artcount=artcount+1其中article_id=:id”,{id:req.params.id})之类的东西@Sombriks谢谢你的评论!你能用代码把这个写在答案部分吗?我应该添加一个类似于table.integer('viewCount')的行吗?然后呢?对不起,我是新来的knexI尝试了这个,但它不起作用。你说的建筑商是什么意思?它是我使用knex.schema.createTable创建的表吗?我可以使用像knex('articles')这样的增量方法吗?where(id:req.params.id)。increment('viewCount',1)?嗨,丹,我说的“builder”是指“knex”,因为它是一个查询生成器。我提供的示例只是基于您已经提供的代码构建的示例。也就是说,articleview是一个存储文章id和viewcount的表,我将其命名为“artcount”。然而,如何称呼这张桌子取决于你自己。另外,我已经查看了文档,没有“.increment()”方法,因此“.raw()”方法可以很好地为您服务。如果还剩下任何doubl,请提供github回购示例,我将提供一些示例。谢谢!现在我明白你的意思了,但我发现了这个:。