因此,正如我在上一篇文章中所讨论的那样,我已经为我的假定数据库做了一个初始架构。 今天,我着眼于Users模式,并试图尽快启动我所能执行的操作。
根据我的路线,您可以猜测我已经完成了什么。 这里! 看看这个。
app.route('/ api / users')
.get(users.all);
app.route('/ api / users / register')
.post(users.register);
app.route('/ api / users / activate')
.get(users.activate);
app.route('/ api / users /:id')
.get(users.single)
.post(users.update)
.delete(users.delete);
嗯嗯,看起来不错吧? 😎很抱歉,如果我在这篇文章中表现出过多的个性,此刻我醉酒困倦。
无论如何,正如您所看到的,我已经设法完成了基本的CRUD功能 以及注册和激活端点。
欺诈
在CRUD函数中 ,我没什么大问题,因为我有这个博客可以帮助我了解基本模板。 但是,挑战出现在寄存器中并激活端点。
寄存器
仅使用寄存器端点,我已经被迫安装更多的依赖项。 这让我感到不舒服,但是我想这在Javascript世界中是正常的。
“ dotenv”:“ ^ 4.0.0”,
“ nodemailer”:“ ^ 4.4.1”
我安装了nodemailer,用于发送一封有关激活码的电子邮件。 当然,我对此进行了研究,并得出结论,这是Node.js中使用的电子邮件模块。 演示中的空邮件就像一个超级按钮,但是我想在真正的邮件客户端上尝试使用,因此我使用了SMTP2GO帐户。 (试一试。是免费的)
这样,我还安装了dotenv,以便可以在git存储库中隐藏SMTP凭据。 我以前在PHP中使用过dotenv的经验,所以我已经知道它是如何工作的。
不能说我的注册是100%可靠的,但是可以,很好。 当然,我会花很多时间来清理。
启用
转到激活端点,由于猫鼬为我完成了工作,因此在寻找正确的激活代码方面我没有很多麻烦。 我使用了findOneAndUpdate方法,只是寻找了要激活的帐户,仅此而已。 当然,我沿途学到了一些新的猫鼬命名法。
用户架构
除了前面提到的问题,在开发过程中,我还有另一个大障碍。 例如,使email字段以及username email段唯一。 我了解到猫鼬实际上并没有内置验证。 我知道这些警告,但是我认为,如果只是让警告溜走,将来会出现问题。 因此,我在应用程序中添加了另一个依赖关系(ugh)。
“ mongoose-unique-validator”:“ ^ 1.0.6”
文档告诉我使用不带--save标志的npm install mongoose-unique-validator ,但是我认为它是一个依赖项,因此无论如何我都使用save标志安装了它。 我还在存储库中打开了一个问题,但是如果有人知道答案,请在下面评论!
我还找到了其他模块,这些模块没有给出使用--save标志的说明,而且我也不明白为什么!
无论如何,在架构中应用mongoose-unique-validator对我来说是不费吹灰之力的,并且做得很好。 在我的更新终结点上,我还添加了所需的参数以使唯一验证有效,并且这样做也没有问题。
但是,当我的文档中的null或不存在的键被视为重复项时,我遇到了问题。 因此,我学到了另一个技巧,可以与唯一性结合并同时允许null。 这是帮助我解决问题的stackoverflow帖子!
用户名: {
类型:字符串,
修剪:是的,
唯一:真实,
稀疏:正确
},
我想就是这样。 当然,我已经了解了timestamps选项,枚举以及内置的加密货币,这些加密货币用于生成随机的激活码字符串。
一个愚蠢的错误是,我在架构中为激活代码设置了默认值。 我不知道为什么我总是得到相同的随机字符串。 但是,这让我感到震惊的是,当我应该放弃时,我应该即时生成默认值。 不在架构本身上。 😂哈哈哈哈!
上床时间😹
无论如何,对于使用JavaScript进行开发的初学者来说,这对我来说并不是一个不好的开始。 我仍然觉得每次您寻找东西时都要安装新的node_modules很奇怪。
需要x吗? 有一个node_module!
嗯,有点像那样。 对我来说,如何传递函数和东西(不是回调地狱)的方式看起来很奇怪。 同样,在camelCase中如何编写变量对我来说也是新的。
我仍然有很多问题,但今天我学到了很多东西,变得富有成效。

我的代码中有很多TODO,下一步是学习Passport.js,这确实非常令人生畏。 我还没有学习过oAuth和其他身份验证策略,但是我将其保存下来!
(我什至还没有哈希密码!)
无论如何,如果您对仓库有兴趣,可以在这里找到它! 我认为没有人愿意对此做出贡献,但是如果您想做出贡献,可以在这篇文章中发表评论,我们可以一起讨论该项目。 🤗
现在所有这些都已经到了,该睡觉了! 我为新的一年感到兴奋,希望我能尽快完成API! 我没有等到新的一年开始让我再次从事这个项目。 但是我会制定一个开发路线图! 大家晚上好! 👋