Node.js和Express笔记3

可能会被问到,为什么现在还在用Node.js和Express呢?你好。
我正在进行Express的教程,因为我想使用rete.js,但我还不知道如何灵活应用。

本次我们将进行第3部分的内容。
https://developer.mozilla.org/ja/docs/Learn/Server-side/Express_Nodejs/mongoose

第三部分数据库。我很期待。

选择数据库

Express和其他的Web框架一样,似乎可以进行各种选择。
可以选择直接使用Express,或者选择使用ODM/ORM。
根据推荐,如果注重速度的话,使用ODM/ORM可以减少开发和维护成本,
所以还是建议使用ODM/ORM比较好。
个人也希望在牺牲速度的前提下能获得更好的扩展性,所以我更倾向于选择后者。

在NPM包中似乎可以使用许多ODM/ORM选项。

在选择教程时,Mongoose是最受欢迎的ODM之一,这是在编写时的情况。
据说数据库使用的是MongoDB。
由于从未接触过NoSQL数据库,所以对此也感到很兴奋。

Mongoose和MongoDB

Node社区中有一种特别受欢迎的组合,这是因为它使用起来很像Json,很容易理解。安装方式是通过npm安装mongoose。

MongoDB有两种安装方式:本地安装和云端安装(Azure、GCP、AWS)。虽然我想使用云端版本,但暂时先安装Windows版。

模型设计

在教程中似乎是要创建一个图书馆应用程序。
它从整理所需数据开始。

由于细节繁琐,只写模型。
– Book
包括书名、作者※1、ISBN、流派※2 等等。
– BookInstance
给书对象添加状态的实例。
– Author(作者※1)
包括姓、名、出生日期、逝世日期等等。
– Genre(流派※2)
包括名称等等。

书籍有多个副本,因此有了BookInstance,可以为每一个副本更改状态。

MongoDB初次亮相

如前所述,我第一次接触MongoDB,对于数据库的概念也不是很理解。
即使被告知在创建数据库的同时也需要创建集合,我还是不太明白。
但当我进行搜索后,我发现它实际上就相当于SQL中的表格。
所以我先尝试创建了一个名为Book的集合。

然后令人吃惊的是,从这里开始的教程没有翻译w

加载mongoose库。连接到mongoDB数据库。

我将尝试使用斜体阅读从这里开始。

我将在app.js中添加有关数据库的描述。
在var app = express();下面添加。

var mongoose = require(“mongoose”);
var mongoDB = “mongodb://localhost/”; //我认为端口是不必要的。
mongoose.connect(mongoDB);
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on(“error”, console.error.bind(console, “MongoDB连接错误:”))

创建模型

看起来模型是在哪里创建的呢,貌似是作为另一个js文件创建的吧。
嗯。
很容易理解。
但是我不习惯处理js字符串…不需要加引号吗?

XXXSchema.virtual(名字).get(function(){return XXXXX}) 的翻译如下:
XXXSchema.virtual(名字).get(function(){return XXXXX})。

这个是在记录添加的瞬间处理的吗?还是在有查询时才会处理?

输入虚拟数据

在教程中,似乎已经为我们准备好了代码。
需要将populatedb.js放在根目录下,并使用node命令来执行。
由于该js文件中使用了async模块,所以需要安装它。
可以通过npm install async来进行安装。

在运行后,数据被迅速填充到指定的数据库中。

namecountsizeauthors599.4Bbookinstance11133.5bbooks7405.6Bgenres353.7B

顺利顺利。
继续。