CouchDB 验证防止删除
CouchDB validation prevents DELETE
为沙发编写验证函数:
function(newDoc, oldDoc, userCtx) {
function isNullOrWhiteSpace(str){ return str === null || str.match(/^\s*$/) !== null; }
function require(field, message) {
message = message || "Document must have a " + field;
if ((!newDoc[field]) || isNullOrWhiteSpace(newDoc[field])) throw({forbidden : message});
};
require("title");
require("content");
}
一切都很好,除了我现在不能删除文档 — 验证不允许我这样做,说文档必须包含 title
和 id
。
如何检测正在进行的操作?
解决方案真的很像沙发:
function(newDoc, oldDoc, userCtx) {
function isNullOrWhiteSpace(str){ return str === null || str.match(/^\s*$/) !== null; }
function require(field, message) {
message = message || "Document must have a " + field;
if ((!newDoc[field]) || isNullOrWhiteSpace(newDoc[field])) throw({forbidden : message});
};
if(!newDoc._deleted){
require("title");
require("content");
}
}
关键点是检查 _deleted
字段的新文档。如果存在,则文件将被删除。这很有趣,但也很奇怪——所以,为了进行更新检查,我必须处理修订更改吗?但在主要方面,它是有效的。
为沙发编写验证函数:
function(newDoc, oldDoc, userCtx) {
function isNullOrWhiteSpace(str){ return str === null || str.match(/^\s*$/) !== null; }
function require(field, message) {
message = message || "Document must have a " + field;
if ((!newDoc[field]) || isNullOrWhiteSpace(newDoc[field])) throw({forbidden : message});
};
require("title");
require("content");
}
一切都很好,除了我现在不能删除文档 — 验证不允许我这样做,说文档必须包含 title
和 id
。
如何检测正在进行的操作?
解决方案真的很像沙发:
function(newDoc, oldDoc, userCtx) {
function isNullOrWhiteSpace(str){ return str === null || str.match(/^\s*$/) !== null; }
function require(field, message) {
message = message || "Document must have a " + field;
if ((!newDoc[field]) || isNullOrWhiteSpace(newDoc[field])) throw({forbidden : message});
};
if(!newDoc._deleted){
require("title");
require("content");
}
}
关键点是检查 _deleted
字段的新文档。如果存在,则文件将被删除。这很有趣,但也很奇怪——所以,为了进行更新检查,我必须处理修订更改吗?但在主要方面,它是有效的。