node.js - 使用 doc._id 和另一个参数查找单个文档
问题描述
我没有找到答案,所以我试了一下:
我有一个数据库,其中存储了具有各种属性的文档,包括uuid
代表当前正在使用该应用程序的用户。我需要按其字段获取单个文档,_id
但我只希望在该uuid
字段与当前用户匹配时返回它。我只知道当前用户uuid
在运行时的状态,所以请求需要是动态的。
我试图用几种不同类型的视图和查询来解决这个问题。最新的尝试如下。
查看设计文档内部:
"current_user_passed_id": {
"map": "function(doc){ if(doc.type && doc.type == 'my_doc' && doc._id && doc.uuid) emit([doc._id, doc.uuid], doc)}"
}
询问:
/db/design/_design_name/_view/current_user_passed_id?key=["6e08fe0e990f73593300df411f023ec4", "9698fde5-99b9-4693-8f78-b2ae8a7f03e0"]
在上面的查询中,6e08fe0e990f73593300df411f023ec4
是doc._id
并且9698fde5-99b9-4693-8f78-b2ae8a7f03e0
是doc.uuid
解决方案
Couch DB 映射函数始终具有_id
属性,因此在函数的条件下不需要检查。我还需要在查询中使用startkey
和endkey
查询参数而不是key
参数。和startkey
两者endkey
都采用相同的数组,因为我只在一个文档之后。
以下是我修改后的工作代码:
查看设计文档内部:
"current_user_passed_id": {
"map": "function(doc){ if(doc.type && doc.type == 'key_doc' && doc.uuid) emit([doc._id, doc.uuid], doc)}"
}
询问:
/db/_design/keys/_view/current_user_passed_id?startkey=["6e08fe0e990f73593300df411f023ec4", "9698fde5-99b9-4693-8f78-b2ae8a7f03e0"]&endkey=["6e08fe0e990f73593300df411f023ec4", "9698fde5-99b9-4693-8f78-b2ae8a7f03e0"]
推荐阅读
- android - Android Room + Kotlin + Kapt + IntelliJ + MacOS Catalina: java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open_utf8
- python - 在数组的所有元素中应用布尔运算符
- permutation - 什么是排名上下文中的右不变性?
- git - `git stash create` 不返回哈希
- c++ - 为什么不能在 range-v3 for_each 中使用指向成员的指针作为可调用/可调用?
- sql - 尝试将 csv 文件导入 SQL,错误提示索引列表超出范围?如何解决?
- c++ - 使用指令不适用于 c++20 概念吗?
- python-3.x - 使用 Python 3.7 而不使用 pandas 聚合成字典列表的平均值、最小值和最大值
- python - 同时提取行数据并在 Pandas 中将其转换为列数据
- java - 将 JSON 解析为 JAVA 时出现问题