【发布时间】:2019-03-08 03:35:16
【问题描述】:
我正在处理一个项目,并遵循用户创建指南。目标是创建一个具有唯一用户名、唯一电子邮件和 bcrypt 密码的用户。一旦使用了用户名或电子邮件,其他用户就不能使用该用户名或电子邮件进行注册。
该过程涉及创建用户,通过 Post 请求使用以下 Schema,使用 postman。在创建用户后添加了“唯一”指示符。在我更新架构以包含“唯一”选项后,我发现仍然可以使用相同的电子邮件创建用户。在这里搜索时,我发现这是由于使用该电子邮件创建的初始文档,并且通过删除该集合并重新开始来解决,这不是一个大问题。
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 文档,然后查看 Mongoose 网站上的 FAQ在创建时是唯一的,而不是使用“唯一”选项。
这是正确的吗?或者,当 Mongoose 告诉我最终我实际上需要使用 MongoDB Shell 时,为什么我会在 Mongoose 中使用“唯一”?使用 Schema validation available in MongoDB 时,Mongoose 是否仍然是开发 MEAN 应用程序时的首选?我确实看到 Mongoose 经常被使用,但我没有任何大的意见或需要做一些尽可能相关的东西,Mongoose 是否仍然值得学习仅仅使用 MongoDB 本身?如果我错了,那会很痛,这很好,我可以接受,但任何见解都会受到赞赏。
【问题讨论】:
-
Mongoose 仍然拥有强大的中间件、自定义验证器(可以是自定义简单函数)、通过描述符的模式继承、虚拟字段等。在做出决定之前,您应该检查一下 mongoose 的特性。 mongoosejs.com/docs/guides.html
标签: node.js mongodb mongoose mean-stack mean