我开始使用MongoDB节点驱动程序,我根本无法通过验证。
我使用查询创建了以下验证对象:
validator: { $in: [
{ name: { $type: "string" } }
]}
这个JSON模式:
validator: {
$jsonSchema: {
bsonType: "object",
required: ["name"],
properties: {
name: {
bsonType: "string",
description: "is required and must be a string"
}
}
}
}
然后,如果我尝试使用以下结构{name: 2}
插入以下文档,则不会添加任何失败的验证。
我已经上下阅读了有关文档验证的mongo和节点驱动程序文档,但是找不到找到这种验证方法。我当前在Express Server版本4.16.3上使用Mongo版本3.6.7和节点驱动程序版本3.1.4。
这是整个代码:
// create a single user
const createSingleUser = (client, db) => {
db.collection("users").insertOne({
name: 2
}, (err, response) => {
if (err) console.warn(err);
console.log("new user added!!!!");
client.close();
}); // insert one
};
// create collection and add validator
const createUserCollection = client => {
const MongoDriverData = client.db("MongoDriverData");
// create the collection and add validation
MongoDriverData.createCollection( "users", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["name"],
properties: {
name: {
bsonType: "string",
description: "is required and must be a string"
}
}
}
}, // validator
validationAction: "error"
}, (err, results) => {
console.log( "Collection created!!!" );
// now insert a user
createSingleUser(client, MongoDriverData);
});
};