ouchdb更新设计文档

桑德·加勒特森(Sander Garretsen)

我有一个nodejs应用程序,在其中使用nano以下脚本连接到我的Sofadb

const { connectionString } = require('../config');

const nano = require('nano')(connectionString);

// creates database or fails silent if exists
nano.db.create('foo');

module.exports = {
  foo: nano.db.use('foo')
}

该脚本在每次服务器启动时都运行,因此,每次服务器(重新)启动时,它都会尝试创建数据库“ foo”,并且如果数据库已经存在,则会以静默方式失败。

我非常喜欢这个想法,因为这样我实际上是在应用程序级别维护数据库,并且在决定添加新数据库时不必手动创建数据库。

进一步采取这种方法,我还尝试从应用程序级别维护我的设计文档。

... 
nano.db.create('foo');

const foo = nano.db.use('foo');

const design = {
  _id: "_design/foo",
  views: {
    by_name: {
      map: function(doc) {
        emit(doc.name, null);
      }
    }
  }
}

foo.insert(design, (err) => {
  if(err)
    console.log('design insert failed');
})

module.exports = {
  foo
}

显然,这只会插入不存在的设计文档。但是,如果我更新了设计文档并想要更新该怎么办?

我试过了:

foo.get("_design/foo", (err, doc) => {
  if(err)
    return foo.insert(design);

  design._rev = doc._rev
  foo.insert(design);
})

现在的问题是,每次服务器重新启动都会更新设计文档(例如,每次重新启动时都会获得新的_rev)。

现在...我的问题:)

1:用数据库和设计自举CouchDB的方法不好吗?我是否应该在部署过程中考虑一些迁移步骤?

2:我的设计文档是否为每个部署和服务器重新启动获取很多_revs是一个问题吗?即使文档本身没有变化?如果是这样,是否有一种方法可以仅在文档更改时更新它?(我想在我的应用程序中手动将_rev设置为某个值,但非常不确定那是个好主意)。

伯恩哈德·格施万特纳
  1. 您的方法似乎很合理。如果检查仅在重新启动时进行,则甚至不会出现性能问题。
  2. 太多的_rev小号可以成为一个问题。_revs的历史记录保存为_revs_info文档本身并与文档一起存储(有关详细信息,请参阅CouchDB文档)根据您的设置,创建不必要的修订可能是一个错误的决定。

对于某些需要某些视图的服务器端脚本,我们也遇到了类似的挑战。我们的解决方案是计算新旧设计文档上的哈希值并进行比较。您可以为此作业使用任何哈希函数,例如sha1md5只需记住在对哈希进行哈希处理之前从旧文档中删除_rev,否则每次都会得到不同的哈希值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ouchdb更新设计文档

来自分类Dev

在ouchDB中更新设计文档时出现文档冲突错误

来自分类Dev

在ouchDB中更新设计文档时出现文档冲突错误

来自分类Dev

在ouchdb中更新设计文档是否会导致视图重建?

来自分类Dev

CouchDB无法识别新设计文档中的更新功能

来自分类Dev

CouchDB无法识别新设计文档中的更新功能

来自分类Dev

是否可以防止在ouchdb中获取远程设计文档

来自分类Dev

将注释添加到ouchdb设计文档中

来自分类Dev

ouchdb文档更新处理程序单个字段

来自分类Dev

取消密码更新设计错误

来自分类Dev

更新设计支持库后缺少TabLayout

来自分类Dev

如何在不丢失现有附件的情况下更新ouchdb文档

来自分类Dev

ouchdb更新处理程序与GET

来自分类Dev

AEM站点:使用Maven构建更新设计规则时,过滤器更新失败

来自分类Dev

ouchDB恢复错误:“文档”的JSON列表缺失

来自分类Dev

ouchDB恢复错误:“文档”的JSON列表缺失

来自分类Dev

为什么我的Registrations#Update更新设计动作不更新用户模型中的所有属性?

来自分类Dev

如何从ouchdb中的文档中列出数据类型

来自分类Dev

如何使用过滤器从ouchdb中删除文档?

来自分类Dev

我如何重新设计这个图表

来自分类Dev

重新设计未经检查的投放警告

来自分类Dev

重新设计md-select容器

来自分类Dev

Android开关小部件重新设计

来自分类Dev

Google Developer Console“尝试新设计”链接

来自分类Dev

重新设计md-select容器

来自分类Dev

UICollectionView - 在横向模式下重新设计

来自分类Dev

如何更新设置字段

来自分类Dev

更新设备方向的 widthAnchor

来自分类Dev

设计文档中的变量

Related 相关文章

热门标签

归档