json - MongoDB JSON 验证未通过
问题描述
我用验证器创建了一个非常基本的计数器集合。我还放了一个方法来调用它。在方法中,我有一个 findAndModify 函数来更新序列。当我调用它时,只有当我将其级别更改为 MODERATE 时它才通过验证器。这里有什么问题?
这是我的验证器方案。
db.createCollection('counter', {
validator: {
$jsonSchema: {
bsonType: 'object',
required: ['sequence_value'],
properties: {
sequence_value: {
bsonType: 'int'
}
}
}
}
});
这是自动更新功能。
function getValueForNextSequence(sequenceOfName) {
var sequenceDoc = db.counter.findAndModify({
query: { _id: sequenceOfName },
update: { $inc: { sequence_value: 1 } },
new: true
});
return sequenceDoc.sequence_value;
}
这是我插入的shell命令来调用它。
db.user.insert({
_id: getValueForNextSequence("user_id"),
name: "Heggo",
surname: "Ruffo",
phone: "5879885858",
roles: ["Logistic"],
password: "d1e8a70b5ccab1dc2f56bbf7e99f064a660c08e361a35751b9c483c88943d082"
})
和输出日志...
2020-03-09T13:12:48.559+0300 E QUERY [js] Error: findAndModifyFailed failed: {
"ok" : 0,
"errmsg" : "Document failed validation",
"code" : 121,
"codeName" : "DocumentValidationFailure"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DBCollection.prototype.findAndModify@src/mongo/shell/collection.js:736:1
getValueForNextSequence@(shell):2:23
@(shell):1:1
解决方案
推荐阅读
- server - 如何修改此 TCL 客户端/服务器程序以使服务器连续向端口写入数据?
- python - 需要正则表达式在字符串中查找 \n 或 \r
- javascript - Azure AD 编程登录
- c# - 如何从 JsonTextReader 获取详细的位置信息
- c - 手臂。将 .cantunwind 指令注入 C 函数
- oop - 如何循环代码以再次播放猜数?
- mongodb - 将 $lookup 结果合并到现有数组
- sql - SQL 最新日期
- javascript - 如何防止js计算器中的多个点以及如何将数字转换为相反的值
- php - htaccess codeigniter 删除 index.php