Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongskin。

Persistence with MongoDB and Mongoskin

https://github.com/azat-co/practicalnode/blob/master/chapter5/chapter5.md

学习mongodb的官方网站:

https://docs.mongodb.com/manual/tutorial/getting-started/



我真的喜欢使用MongoDB with Node。因为这个数据库有JavaScript interface, 并使用JSON-like data structure。

MongoDB是一种NoSQL database。

NoSQL databases (DBs), also called non-relational databases非关系型数据库。

more horizontally scalable,在横向上有更多的扩展性

better suited for distributed systems than traditional SQL,比传统的SQL更适合分布式的系统。

NoSQL DBs内置方法让数据复制和自定义查询语法。这被叫做反规范化denormalization.

NoSQL databases deal routinely with larger data sizes than traditional ones.

通常非关系数据库处理比传统关系数据库更大的数据。

关键的区别:

NoSQL DBs是没有schema的。

没有table,仅仅是一个有IDS的简单store。

大量数据类型是不储存在数据库(没有更多的ALTER table 查询);  它们被移动到app,或者object-relational mapping (ORM) levels--我们的案例,移动到Node.js代码。

作者说:

这些NoSQL最棒的优点!我可以快速地prototype prototyping和iterate (more git pushes!)
一旦我或多或少的完成,我能执行 implement schema和validation in Node.
This workflow allows me to not waste time early in the project lifecycle while still having the security at a more mature stage.
这种工作流程,让我不会在工程的早期浪费时间,同时在更成熟的阶段仍有安全。?

MongoDB

文档储存的非关系型数据库。

与之对比的是key-value类型的数据库如Redis, 以及wide-column store NoSQL databases。

NoSQL DBs汇总:http://nosql-database.org/

MongoDB是最成熟mature,dependable的NoSQL数据库。

另外,MongoDB有一个JavaScript交互interface!这非常棒!

因为现在无需在前端(browser JavaScript)和后端(Node.js)之间来回切换switch context,和数据库。

这是我最喜欢的功能!

开发MongoDB的公司是一个工业的领导者,提供了学习MongoDB的在线网站   (https://university.mongodb.com).

https://docs.mongodb.com/manual/tutorial/getting-started/

准备开始MongoBD和Node.js , 本章将讲如下章节:

  • Easy and proper installation of MongoDB
  • How to run the Mongo server
  • Data manipulation from the Mongo console
  • MongoDB shell in detail
  • Minimalistic native MongoDB driver for Node.js example
  • Main Mongoskin methods
  • Project: Storing Blog data in MongoDB with Mongoskin

Easy and Proper Installation of MongoDB

macOS使用HomeBrew安装。?

$ brew install mongodb

或者从官网下载文件并配置它。http://www.mongodb.org/downloads

其他安装方式见本文后续说明和连接。

可选:

如果想在你的系统的任何位置使用MongoDB命令, 需要把mongoDB path增加到$PATH变量。

对应macOS,你需要open-system path file, 它在/etc/paths:

$ sudo vi /etc/paths

然后,在/etc/paths文件内增加下面的代码:

/usr/local/mongodb/bin

创建一个data文件夹;默认 MongoDB使用根目录的/data/db。

//创建文件夹
$ sudo mkdir -p /data/db//改变group和owner
$ sudo chown `id -u` /data/db

这个数据文件夹是你的本地数据库实例的存放位置~,它存放所有databases, documents,和on-all data.

如果你想储存数据在其他地方,可以指定path, 当你登陆你的database实例时,使用--dbpath选项给mongod命令.

各种安装方法官网:

"Install MongoDB on OS X"


How to Run the Mongo Server

使用mongod命令来启动Mongo server

如果你手动安装,并没有连接位置到PATH, 去到你解包MongoDB的这个folder。那里有个bin文件夹。

输入:

$ ./bin/mongod

如果你像大多数开发者一样,喜欢在你的电脑任意位置输入mongod, 我猜测你把MongoDB bin文件夹放入了你的PATH环境变量中。所以如果你为MongoDB location增加$PATH, 就直接输入:

//任意位置
$ mongod

??注意,在增加一个新的path给$PATH变量需要重启terminal window。

当teminal上出现

waiting for connections on port 27017

意味着MongoDB数据库server正在运行!Congratulations!

默认它监听  http://localhost:27017

This is the host and port for the scripts and applications to access MongoDB.

In our Node.js code, we use 27017 for for the database and port 3000 for the server.


Data Manipulation from the Mongo Console

和Node.js REPL类似,MongoDB也有一个console/shell,作为database server实例的客户端。

这意味着,保持一个terminal window跑server,再开启一个tab/window用于console。

开启console的命令:

$ ./bin/mongo  //或mongo

当你成功地连接到数据库实例,之后你应该看到这些:

MongoDB shell version: 4.0.5
connecting to: test

看到光标>, 现在你在一个不同的环境内而不是zsh或bash。

你不能再执行shell命令了,所以不要使用node server.js或者mkdir。

但是你可以使用JavaScript,Node.js和一些特定的MongoDB代码。

例如,执行下面的命令,来保存一个document{a: 1}, 然后查询这个集合,来看看这个新创建的document:

> db.test.save({a: 1})
WriteResult({ "nInserted" : 1 })
> db.test.find()
{ "_id" : ObjectId("5c3c68cb8126284dea64ff02"), "a" : 1 }

命令find(), save()就是字面的意思。

你需要在它们前面加上db.COLLECTION_NAME,  用你自己的名字替代COLLECTION_NAME

??在masOS,使用control + C关闭process,

下章讨论最重要的MongoDB console commands:


MongoDB Console in Detail

原文地址:https://www.cnblogs.com/chentianwei/p/10268346.html

时间: 2024-11-03 15:14:35

Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongskin。的相关文章

Practical Node.js (2018版) 第7章:Boosting Node.js and Mongoose

参考:(mongoose和mongodb模块的区别)https://www.jianshu.com/p/87bcf4fdb479 参考: mongoose官网(https://mongoosejs.com/docs/models.html) 参考: 英文:Boosting Node.js和MongoDB with Mongoose 简介:mongoose Mongoose is a fully developed object document mapping (ODM) library for

Practical Node.js (2018版) 14章, async code in Node

Asynchronous Code in Node 历史上,Node开发者只能用回调和事件emitters. 现在可以使用一些异步的语法: async module Promises Async/await funcitons 原文地址:https://www.cnblogs.com/chentianwei/p/10351476.html

Practical Node.js第3章:测试

TDD and BDD for Node.js with Mocha TDD测试驱动开发.自动测试代码. BDD: behavior-driven development行为驱动开发,基于TDD.一种自然化的测试语言. 例如,使用expect(response.status).to.equal(200)代替了TDD的assert.equal(response.status, 200) Mocha  摩卡?? (点击连接看git)(方法:文档) 本章介绍:比较流行的javascript test

window平台安装node.js绿色版

1. 下载Windows Binary版本的node.js文件 2. 把下载的ZIP压缩包解压到某个目录下(例如:D:\nodejs) 3. 此时的node.js只在刚刚解压的目录才起作用,需要配置环境变量才能起到全局的作用. 1. 在此电脑(我的电脑)右击-属性-高级系统设置 2. 在弹出的窗口中点击右下角的"环境变量"按钮 3. 接下来在系统环境变量中配置具体的环境变量,建议在系统变量中添加,不要在用户变量添加. NODE_HOME=D:\nodejs NODE_PATH=%NOD

node.js入门经典 第2章 npm(Node包管理器)

2.1 npm是什么 npm(Node Package Manager)是Node.js的包管理器.它允许开发人员在Node.js应用程序中创建.共享并重用模块. 2.3 安装模块 npm install [module_name] 2.4 使用模块 var module = require{'module'}; 2.8  使用package.json指定依赖关系 使用package.json文件来指定在应用程序中要用的模块,并且通过单个命令来安装它们: npm install

Node.js学习之(第二章:exports和module.exports)

前言 Node中,每个模块都有一个exports接口对象,我们需要把公共的方法或者字符串挂载在这个接口对象中,其他的模块才可以使用. Node.js中只有模块作用域,默认两个模块之间的变量,方法互不冲突,互不影响,这样就导致一个问题,我们怎样使用加载进来的模块中的方法呢?这就需要在另外一个模块exports接口对象中挂载模块中公共的方法. exports 我们在a.js中有以下代码: let foo = 'hello' function add (x, y) { return x+y } exp

Node.js笔记(四)mysql数据库操作

本文不完全参考了<Node学习指南>的第11章 部分资料参考自 http://www.crifan.com/node_js_run_mysql_createclient_error_typeerror_object_has_no_method_createclient/ 感谢他的代码 -------------------------- 第二篇文章里成功连接到了数据库,接下来准备进行增删改查的工作 关于连接的方法,书中给的代码如下: 创建连接 var client = mysql.create

将 node.js 的数据保存到 mongo 数据库中

Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2.6.4-signed.msi 执行安装程序. 下一步 同意许可协议 可以选择定制 Custom 看一下. 全部装上吧. 开始实际安装. MongoDB 默认安装到了 C:\Program Files\MongoDB 2.6 Standard\bin 目录下,但是,没有自动添加到 Path 路径中,手

使用 HTTP 上传 G 级的文件之 Node.js 版本

不管喜欢与否,javascript无处不在. 我们可以在客户端的前台应用中找到它,也可以在大量的框架.类库中找到它,而且可以在服务器端的后台应用中找到它. 近年来, Javascript越来越流行,这似乎是由于 Javascript 生态系统正在帮助提高生产率.减少入门所需的时间. 在我的第一篇文章中,我介绍了使用 ASP.NET Web 后端 API 实现 G级文件上传,发表完这篇文章后,我决定试一下使用 Node.js 能否达到同样的效果.  这意味着我需要实现 UploadChunk和 M