首页 > 解决方案 > Node.JS/Express - 如何避免多个数据库查询

问题描述

我有一个基本的 express 应用程序,我开始使用 db 查询,我想知道如何避免多个 db 查询,因为我认为它的效率不高:

app.get('/:word', function(req,res){

    db.create({'name': word});

    console.log('the word is ' + word);
});

我想做的是:

  1. 从 url 中获取单词
  2. 检查它是否存在于 datbaase 中(或以前请求过,因为如果是,那么它可能已经通过这个基本代码添加了)
  3. 如果它不存在,则添加它,然后继续执行 console.log

我只想将每个单词添加到我的数据库中一次,而不是一次又一次地运行 db 查询。

这就是我的想法:

在插入之前检查它是否存在的不是那么有效的方式查询

好方法,但我不知道如何从这里开始缓存正在查询的单词并维护缓存以防止数据库查询

更多信息编辑

我通过 mongoose 使用 mongodb 'word' 键已经是唯一的,所以我知道它不会创建重复值

如果该值或该 url 已经被命中一次,我不想运行任何数据库查询

标签: node.jsmongodb

解决方案


在 mongo db 中,您可以使用带有可选标志 upsert: true文档的 findOneAndUpdate

为了确保每个单词只出现一次,您还应该在该字段上设置唯一索引。但是请记住,唯一索引区分大小写,因此 Cat 和 cat 是不同的词。


推荐阅读