Mongoose 与 MongoDB 验证
Mongoose vs MongoDB validation
我有一个正在进行的项目,并且正在遵循用户创建指南。目标是创建一个具有唯一用户名和唯一电子邮件和 bcrypt 密码的用户。一旦使用,任何其他用户都不能使用用户名或电子邮件进行注册。
该过程涉及创建用户,通过 Post 请求使用以下架构,使用邮递员。 "unique" 指示符是在用户创建后添加的。在更新架构以包含 "unique" 选项后,我发现仍然可以使用相同的电子邮件创建用户。在此处搜索时,我发现这是由于使用该电子邮件创建了初始文档,并且通过删除该集合并重新开始解决了这个问题,这不是什么大问题。
var UserSchema = new Schema({
username: { type: String, lowercase: true, required: true, unique:
true},
password: { type: String, required: true },
email: { type: String, required: true, lowercase: true, unique: true}
});
但是,在研究 Mongoose 网站时,我发现了一些关于验证的信息,这让我有点困惑。我正在查看我的数据的 validation docs and then FAQ on the Mongoose site which from what I can tell states I should instead, in production, use MongoDB shell to create the indexes,如果我希望它们在创建时被确认是唯一的,而不是使用 "unique" 选项。
这是正确的吗?或者,当 Mongoose 告诉我最终我实际上需要使用 MongoDB Shell 时,为什么我会在 Mongoose 中使用 "unique"? Schema validation available in MongoDB 在今天开发 MEAN 应用程序时,Mongoose 仍然是首选选项吗?我确实看到 Mongoose 经常被使用,但我没有任何大的意见,也不需要做一些尽可能相关的东西,Mongoose 是否仍然值得学习,而不是仅仅使用 MongoDB 本身?如果我错了那么痛,那很好,我可以接受,但任何见解都将不胜感激。
您可以使用 MongoDB Native Driver for Node.js
而不是 Mongoose。我发现使用 Mongoose 的 Schema 更容易一些,也更相关。在这种情况下并没有真正的错误或正确,但是 Mongoose 有一点性能下降,如下所示:
Performance
您还可以使用带有 mongoose-unique-validator
包的 Mongoose 来处理 unique
验证。
Link for the package
const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');
var UserSchema = mongoose.Schema({
username: { type: String, lowercase: true, required: true, unique: true},
password: { type: String, required: true },
email: { type: String, required: true, lowercase: true, unique: true}
});
userSchema.plugin(uniqueValidator);
我有一个正在进行的项目,并且正在遵循用户创建指南。目标是创建一个具有唯一用户名和唯一电子邮件和 bcrypt 密码的用户。一旦使用,任何其他用户都不能使用用户名或电子邮件进行注册。
该过程涉及创建用户,通过 Post 请求使用以下架构,使用邮递员。 "unique" 指示符是在用户创建后添加的。在更新架构以包含 "unique" 选项后,我发现仍然可以使用相同的电子邮件创建用户。在此处搜索时,我发现这是由于使用该电子邮件创建了初始文档,并且通过删除该集合并重新开始解决了这个问题,这不是什么大问题。
var UserSchema = new Schema({
username: { type: String, lowercase: true, required: true, unique:
true},
password: { type: String, required: true },
email: { type: String, required: true, lowercase: true, unique: true}
});
但是,在研究 Mongoose 网站时,我发现了一些关于验证的信息,这让我有点困惑。我正在查看我的数据的 validation docs and then FAQ on the Mongoose site which from what I can tell states I should instead, in production, use MongoDB shell to create the indexes,如果我希望它们在创建时被确认是唯一的,而不是使用 "unique" 选项。
这是正确的吗?或者,当 Mongoose 告诉我最终我实际上需要使用 MongoDB Shell 时,为什么我会在 Mongoose 中使用 "unique"? Schema validation available in MongoDB 在今天开发 MEAN 应用程序时,Mongoose 仍然是首选选项吗?我确实看到 Mongoose 经常被使用,但我没有任何大的意见,也不需要做一些尽可能相关的东西,Mongoose 是否仍然值得学习,而不是仅仅使用 MongoDB 本身?如果我错了那么痛,那很好,我可以接受,但任何见解都将不胜感激。
您可以使用 MongoDB Native Driver for Node.js
而不是 Mongoose。我发现使用 Mongoose 的 Schema 更容易一些,也更相关。在这种情况下并没有真正的错误或正确,但是 Mongoose 有一点性能下降,如下所示:
Performance
您还可以使用带有 mongoose-unique-validator
包的 Mongoose 来处理 unique
验证。
Link for the package
const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');
var UserSchema = mongoose.Schema({
username: { type: String, lowercase: true, required: true, unique: true},
password: { type: String, required: true },
email: { type: String, required: true, lowercase: true, unique: true}
});
userSchema.plugin(uniqueValidator);