- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻求有关 TypeScript 和 PouchDB type declarations 的帮助。考虑这个 TS 代码:
import PouchDB = require('pouchdb')
import find = require('pouchdb-find')
PouchDB.plugin(find)
const data = new PouchDB("http://localhost:5984/data"),
export async function deleteLastRevForIds(dbname, ids) {
const docsToDelete = await data.find({
fields: ["_id", "_rev"],
selector: { _id: { $in: ids } }
})
const deletePromise = docsToDelete.docs.map(doc => {
return data.remove(doc) // <-- HERE TSC SHOUTS AT ME about `doc`
})
const deletion = await Promise.all(deletePromise)
return deletion
}
在带注释的 remove()
调用中,tsc
发出此错误:
Argument of type 'IdMeta' is not assignable to parameter of type 'RemoveDocument'.
Type 'IdMeta' is not assignable to type 'RevisionIdMeta'.
Property '_rev' is missing in type 'IdMeta'.'
发生的事情是 find()
调用是 typed by the DefinitelyTyped typings返回一个 {docs: PouchDB.Core.IdMeta[]}
。顾名思义,一个PouchDB.Core.IdMeta[]表示 {_id: string}
数组。
但这是假的! PouchDB.find()
不仅仅返回 {_id: ...}
对象的列表,它返回一个 {_id: ..., _rev: ...}
列表(另外我明确要求提供这两个字段)。或者我错过了什么?
因此,当调用 remove()
函数时(DT 类型正确地键入为需要一个完全指定的 _id+_rev RevisionIdMeta
) 和这样的对象,TS 正确地对我大喊大叫。
我尝试向各个方向转换这个东西,但无法将其弯曲到我的意愿; tsc
不断出错,指出我的对象中缺少 _rev
。
另外,我应该建议更改 DT 类型吗?
谢谢。
最佳答案
是的,Pouchdb-find 定义是错误的。像这样的事情应该会让你感动......
const data = new PouchDB("http://localhost:5984/data")
interface FixedFindResponse<Content extends PouchDB.Core.Encodable> {
docs: PouchDB.Core.ExistingDocument<Content>[];
}
export async function deleteLastRevForIds(dbname: void, ids: number[]) {
const docsToDelete: FixedFindResponse<any> = await data.find({
fields: ["_id", "_rev"],
selector: { _id: { $in: ids } }
})
const deletePromise = docsToDelete.docs.map(doc => {
return data.remove(doc) // <-- HERE TSC SHOUTS AT ME about `doc`
})
const deletion = await Promise.all(deletePromise)
return deletion
}
关于typescript - 如何解决 PouchDB 的错误(?)TypeScript/DefinitelyTyped 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44139701/
在 Pouchdb 中,处理多个数据集合的最佳方式是什么?我的意思是,例如,我需要多个待办事项列表,而不是一个简单的待办事项列表,例如:家庭待办事项、工作待办事项、社区待办事项和生态待办事项。 我应该
https://pouchdb.com/guides/compact-and-destroy.html 中的 PouchDB 文档引起了我的注意。 : By default, PouchDB and
PouchDB最佳实践建议是使用 PUT而不是 POST用于创建新文档(类似于 rdbms 中的一行),主要是因为后者会生成一个随机 ID,这使得后续数据排序效率低下。 PUT另一方面,需要提供用户生
我来自 Mysql 背景,现在正在使用 Pouchdb。我习惯了每个应用程序有 1 个数据库和许多表的 SQL 模式。 在 pouchDB 中则不同,因为数据不是存储在表中而是存储在文档中。因此,在我
我不知道在哪里可以捕获在 pouch 中访问远程 couchdb 的失败尝试。例如: var testPouchDB = new PouchDB('http://remotedb-url/non-ex
我在 pouchdb 中有一些数据,我想显示 pouchdb 中的总行数,我该怎么做? angular.module("pouchapp", ["ui.router"]) .run(function(
在浏览器中处理与同一远程/本地数据库同时同步的多个 PouchDB 实例的推荐方法是什么? 我的设置是浏览器中的一个 Web 应用程序,它与远程 CouchDB 持续同步。 该 Web 应用程序可以多
有没有办法更新文档的id?我试图通过以下代码实现这一点,但这会引发错误(如下): this.db.get('oldId') .then(document => { this.logshee
我正在使用 PouchDB 和 node.js 将我的文档存储在服务器上,但在开发过程中,许多有缺陷或需要删除的文档已经开始在数据库中积累。 是否有像 SQL Studio 这样的 GUI 客户端,它
我使用 CouchDB 作为后端,使用 PouchDB 在 vuejs 应用程序中查询/同步数据库。 我有 4 种不同类型的文档都存储在一个数据库中,如上所示: { "_id": "patient
CouchDB 文档: "members": [ { "name": "Mark", "age": 35, }, { "name": "
我在使用 pouchdb-find 创建索引以在 pouchDB 中搜索时遇到了一些麻烦.我一直收到错误 找不到可用的索引。尝试在以下位置创建索引:dateCreated。确保只有 $eq、$gt、$
我正在尝试将我的 redux 状态同步到 PouchDB 实例,但遇到了问题。 正如日志中所示,在操作发生后,我的 redux 状态既没有同步到 PouchDB,PouchDB 文档也没有在更新时同步
首先,我对使用 cloudant 还很陌生,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止我能找到的所有信息都来自几年前看似过时的 SO 帖子。 我已经设置了一项在我的资源列表中
首先,我对使用 cloudant 还很陌生,所以这对我来说是一个非常陡峭的学习曲线。任何帮助表示赞赏。到目前为止我能找到的所有信息都来自几年前看似过时的 SO 帖子。 我已经设置了一项在我的资源列表中
我正在使用 Angular5 项目测试 PouchDB。我想使用这些 pouchdb 插件: pouchdb-find relational-pouch 所以我知道如何导入 PouchDB: impo
我是 pouchdb 和 nw.js 的新手,可能这个问题有点太简单了(抱歉我的无知)。 我试图通过 require() 在 nw.js 项目中使用 pouchdb,但没有成功。 根据 pouchdb
在 PouchDB 中设置了一个continuous(实时)复制之后,我如何找到这些(比如 _replicate 或 _replicator 的事件任务)在 CouchDB 中)? 或者更确切地说,我
我在应用程序启动时建立同步(与事件监听器),我需要停止它并再次运行。有一个 .cancel() 函数可以工作,但我如何才能重新启动同步? 我试图删除在 cancel() 之后从 sync() 函数返回
假设我们将以JSON对象表示的汽车(约40MB)存储在PouchDB中,并且我们想基于马力属性进行搜索。 sql中的示例:从HP> 100的汽车中选择*。 您可以按键查询pouchDB,但是显然HP并
我是一名优秀的程序员,十分优秀!