使用require()加载本地文件
你可以使用require() 函数在你的 MongoDB 演示场中包含来自本地文件代码。你可以将代码存储在一个位置,并在不同的演示场中重复使用该代码。
关于此任务
本教程展示了如何使用require()
加载本地脚本。您还可以使用 require()
加载 Node 模块,例如从 npm 下载的模块。有关更多信息,请参阅使用 require() 包含 Node.js 模块.
步骤
1
创建脚本文件
以下脚本文件验证文档以确保所需字段存在。将脚本保存到您的本地文件系统中的 validate.js
// validate.js const required_fields = [ 'name', 'email' ] const validate_data = (document) => { let is_valid = true; for (const field of required_fields) { if (document[field] == null) { is_valid = false; } }; return is_valid; }; module.exports = validate_data;
2
创建使用验证脚本的沙盒
以下沙盒使用 require()
调用 validate.js
中指定的 validate_data
函数。在两个示例文档上调用 validate_data
函数。如果文档包含所需的字段 name
和 email
,则将其插入到 people
集合中。
重要
更新沙盒的第一行,以包含 validate.js
文件的路径
// playground-1.mongodb.js const validate = require('/path/to/validate.js'); use('mongodbVSCodePlaygroundDB'); const doc1 = { _id: 1, 'name': 'Taylor', 'email': 't123@gmail.com' }; const doc2 = { _id: 2, 'name': 'Taylor' }; const docs = [ doc1, doc2 ]; let inserted_count = 0; for (const doc of docs) { if (validate(doc)) { db.getCollection('people').insertOne(doc); inserted_count++; } }; console.log("Inserted " + inserted_count + " documents");
结果
只有doc1
包含两个必需字段,并被插入到集合中。doc2
不包含必需字段email
,因此未被插入。
要确认正确地插入了文档,请查询people
集合
use mongodbVSCodePlaygroundDB db.people.find()
输出
[ { _id: 1, name: 'Taylor', email: 't123@gmail.com' } ]