集合的自动更新功能
可以通过构造函数选项autoupdate:true
在每个集合的基础上启用自动更新。该功能需要Object.observe
(目前在Chrome 36+
, io.js
和 Node.js 0.12+
中实现)。如果观察者不可用,则该选项将被忽略。
无论何时修改文档,自动更新(Autoupdate
)都会自动调用 update(doc)
,这对索引更新和脏标记(用于确定数据库是否已被修改并应该保留)是必需的。
启用此功能基本上意味着,所有手动update
呼叫都可以省略。
示例
1 | var doc = collection.by("name", "John"); |
自动更新(Autoupdate
)将在当前事件循环结束时调用 update
,因此即使在进行多项更改时也只会调用 update
一次。
错误处理
自动更新和手动更新之间有一个重要区别。例如,如果文档更改违反了唯一键约束,update
将同步抛出一个可以同步捕获的错误:
1 | var collection = db.addCollection("test", { |
由于自动更新(Autoupdate
)异步调用更新,因此无法通过try-catch
捕获错误。相反,你必须使用事件监听器:
1 | var collection = db.addCollection("test", { |
这可能会变得非常繁琐,因此您应该考虑在更新文档之前进行检查。