使用Mongoose操作MongoDB
Mongoose是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。
关于在Mac下安装和使用MongoDB可以看我之前的一篇文章:
文章传送门:Mac下安装MongoDB 及使用教程
MongoDB PATH环境变量配置
将mongodb添加到环境变量中:$ vim ~/.zshrc,添加如下命令行:
1 | export PATH="$PATH:/usr/local/mongodb/bin" |
当然前提是将解压出来的文件移到/usr/local/mongodb目录中。版本3.0.7
然后就可以在终端直接使用MongoDB命令,而不用每次都进入MongoDB所在文件夹的目录啦。
比如,启动MongoDB,直接在终端输入 $ mongo 就可以启动啦
默认运行在 http://127.0.0.1:27017 。
还可以自定义端口:$ mongod --dbpath=data/db --port=27017或者输入:$ mongo 127.0.0.1:27017
Mongoose的使用
首先新建一个名为mongo的文件夹,该文件夹就是数据库目录。然后在该目录下安装mongoose:1
$ npm install mongoose
在该目录下新建一个名为script.js的文件:
1 | var mongoose = require('mongoose'); |
通过Model我们就可以创建、删除和修改mongodb里面的文档,MongoDB为我们提供了Schema,Schema则提供了数据类型和结构的定义。
然后在该目录下再新建一个名为insert.js的文件:
1 | var mongoose = require('mongoose'); |
save status: success1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>`find`查询操作,返回结果包含在数组里(单个的请使用`findOne()`)
```js
var mongoose = require('mongoose');
require('./script');
var Book = mongoose.model('Book');
/*
find参数:
1.<Object>mongodb selector
2.<Function>err:错误信息,results:查询结果
*/
Book.find({}, function (err,results) {
if(err){
console.log('error message',err);
return;
}
console.log('results',results);
});
###$or(array)和$and(array)
新建一个名为or.js的文件
1 | var mongoose = require('mongoose'); |
终端输入$ node or.js,不出意外应该能输出:
1 | condition { '$or': [ { author: 'trigkit4' }, { author: 'Mike' } ] } |
关于Array
Array在JavaScript编程语言中并不是数组,而是集合,因此里面可以存入不同的值,以下代码等价:
1 | var Schema1 = new Schema({array:[]}); |
在Express中使用Mongoose
首先先安装express-generator
$ npm install express-generator -g
安装好后,在终端执行:
$ express mongooseExpress
用来生成一个express实例。
然后我们在这个mongooseExpress文件夹下新建一个名为config的文件夹,然后在config下新建一个config.js文件:
1 | module.exports = { |
在再config文件夹下新建一个名为mongoose.js的文件:
1 | var mongoose = require('mongoose'); |
然后我们再新建一个名为models的文件夹,然后新建一个名为user.server.model.js的文件:
1 | var mongoose = require('mongoose'); |
然后在刚才的mongoose.js中添加如下代码:1
require('../models/user.server.model.js');
打开app.js,添加如下代码:
1 | var mongoose = require('./config/mongoose'); |
###使用Mongoose读取数据
首先打开routes文件夹下的users.js文件,添加如下代码:
1 | var mongoose = require('mongoose'); |
最后,打开终端,进入mongooseExpress目录,执行
$ npm install
将package.json的依赖安装好后,再执行:
1 | $ npm install mongoose --save |
在终端输入cat package.json,可以看到
1 | { |
可以看到"start": "node ./bin/www",因此,启动脚本需要在终端执行
$ node bin/www
然后打开另外一个窗口,输入:
1 | curl localhost:3000/users/test |
可以看到node bin/www那端的窗口显示GET / 200 28.562 ms - 170