MST

星途 面试题库

面试题:CouchDB设计文档验证函数对文档版本兼容性的处理

当CouchDB中的文档结构随着业务发展发生变化,例如新增了一些必填字段。如何编写设计文档验证函数,既保证新文档能正确验证,又能兼容旧版本的文档(旧文档没有新增字段),请阐述整体思路并给出核心代码示例。
40.8万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试

整体思路

  1. 在验证函数中首先判断文档是否为新格式,可通过检查新增字段是否存在来判断。
  2. 如果是新格式文档,对新增必填字段进行验证,确保其有值。
  3. 如果是旧格式文档,直接通过验证,不要求新增字段存在。

核心代码示例

function(doc) {
    // 假设新增的必填字段为 "new_field"
    if (doc.new_field) {
        // 验证新文档的新增必填字段
        if (!doc.new_field) {
            throw({forbidden: "new_field is required for new documents"});
        }
    }
    // 旧文档无需额外验证,直接通过
}