布丁的博客

好吃的技术宅∧ ∧

NthsKeys – MongoDB

| 1 Comment

拥抱新事物。NthsKeys 采用 MongoDB 作为数据库。

作为基于文档的 NoSQL 数据库,MongoDB 没有被严格的 schema 所束缚,取而代之的是类似 JSON 的文档模型。为了能更方便地访问数据,我们选择用 Mongoose 这款 ODM 代替直接访问 MongoDB 驱动。

首先定义好文档 schema,以 Archive  为例:

可以看到,尽管 MongoDB 有 schemaless 的特性,但依然支持用索引来加速查询。

最开始设计 schema 的时候,我为了图省事,给 created_at 设置了

,后来各种出问题,果断被自己坑了一把。聪明的读者一定已经看出问题了。

然后用这个 schema 来定义模型:

这样就定义好了模型,可以对它进行各种 CRUD 甚至更复杂的操作了。比如:

还剩一个最重要的问题,如何连接 MongoDB 数据库实例。考虑到整个应用要运行在 Docker 容器中,MongoDB 数据库的连接信息是以环境变量的形式提供的,因此只要读取提供的环境变量即可。这里最有用的是  MONGODB_CONNECTION  ,该变量的值形如  localhost:27017/test ,直接传给  mongoose.connect 即可。连接操作也是异步的,我把模型的初始化操作函数封装成 Promise 对象,并在连接完成后进行。这样一来,数据库模型就能安全地注入到应用当中。具体细节请自行阅读 /lib/model.js

接下来我会详细讨论 NthsKeys 各个模块,明天继续。

anyShare分享到:

One Comment

  1. Pingback: NthsKeys – 简单的爬虫 « 布丁的博客

发表评论

Required fields are marked *.