1. 安装Mongoose

npm install mongoose

2. 使用

2.1 创建连接

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/test');

2.2 获取数据库的一些通知信息

var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function(callback){

//do something

});

2.3 创建Schmema和Model

var kittySchema = mongoose.Schema({
             name: String
        });

var Kitten = mongoose.model('Kitten', kittySchema)

var silence = new Kitten({ name: 'Silence' })
        console.log(silence.name); // 'Silence'

2.4 为Model增加“行为”

kittySchema.methods.speak = function () {
            var greeting = this.name
              ? "Meow name is " + this.name
             : "I don't have a name"
            console.log(greeting);
        };

var Kitten = mongoose.model('Kitten', kittySchema);

var fluffy = new Kitten({ name: 'fluffy' });
        fluffy.speak() // "Meow name is fluffy"

2.5 查找

Kitten.find(function (err, kittens) {
            if (err) return console.error(err);
            console.log(kittens)
        });

Kitten.find({ name: /^Fluff/ }, callback)

2.6 保存或者更新

var kitty = new Cat({ name: 'Zildjian' });
        kitty.save(function (err) {
        if (err) // ...
            console.log('meow');
        });

2.7 删除

TaskModel.findById(req.params.id,function(err, task){
            if(!err && task){
                task.remove(function(){
                    res.redirect('/todo/tasks');
                });
            }
            else{
                res.end('not found.')
             }
         })

参考:

1. Mongoose-Getting Started http://mongoosejs.com/docs/index.html

2. Mongoose-docs http://mongoosejs.com/docs/guide.html

3. Queries http://mongoosejs.com/docs/queries.html

附代码:

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Schema = mongoose.Schema; var connStr = 'mongodb://localhost/todo_development'; mongoose.connect(connStr);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log('db open...');
}); var TaskSchema = new Schema({
task: String
});
var TaskModel = mongoose.model('Task', TaskSchema);
console.log('model Task is created.'); /* GET home page. */
router.get('/', function(req, res, next) {
res.render('todo/index', { title: 'To Do List' });
}); router.get('/tasks', function(req, res, next){ //从数据库加载todos
TaskModel.find({}, function(err, docs){
if(!err){
res.render('todo/tasks/index',{
titile: 'Todos index view',
docs:docs
});
}else{
console.log(err);
res.render('todo/tasks/index',{
titile: 'Error happens when load todos.',
docs:[]
});
}
});
}); router.get('/tasks/new', function(req, res, next){
res.render('todo/tasks/new', {
title: 'New Task'
});
}); router.post('/tasks/new', function(req, res){
//save to db
var task = new TaskModel(req.body);
task.save(function(err){
if(!err){
res.redirect('/todo/tasks');
}else{
res.redirect('/todo/tasks/new');
console.log(err);
}
});
}); router.get('/tasks/:id/edit', function(req, res, next){
var task = TaskModel.findById(req.params.id,function(err, task){
if(!err){
res.render('todo/tasks/edit', {
title: 'Edit Task',
task: task
});
}
else{
res.end('not found.')
}
})
}); router.get('/tasks/:id/delete', function(req, res, next){
var task = TaskModel.findById(req.params.id,function(err, task){
if(!err && task){
task.remove(function(){
res.redirect('/todo/tasks');
});
}
else{
res.end('not found.')
}
})
}); router.post('/tasks/edit', function(req, res){
//save to db
var task = new TaskModel(req.body);
task.save(function(err){
if(!err){
res.redirect('/todo/tasks');
}else{
res.redirect('/todo/tasks/' + req.body.id + '/edit');
console.log(err);
}
});
}); module.exports = router;

Node.js使用Mongoose包操作MongoDB数据库的更多相关文章

  1. mongoose之操作mongoDB数据库

    mongoose是node.js操作mongoDB数据库的一种工具,借助于mongoose,我们可以便捷的完成一些数据库的基本操作,基本使用如下: 1.安装 npm install mongoose ...

  2. nodeJS中使用mongoose模块操作mongodb数据库

    在实际运用中,对于数据库的操作我们不可能一直在cmd命令行中进行操作,一般情况下需要在node环境中来操作mongodb数据库,这时就需要引入mongoose模块来对数据库进行增删改查等操作. 首先, ...

  3. node.js下mongoose简单操作实例

    Mongoose API : http://mongoosejs.com/docs/api.html // mongoose 链接var mongoose = require('mongoose'); ...

  4. [转] node.js下mongoose简单操作实例

    Mongoose API : http://mongoosejs.com/docs/api.html // mongoose 链接 var mongoose = require('mongoose') ...

  5. node.js+express+mongoose实现用户增删查改案例

    node.js+express+mongodb对用户进行增删查改 一.用到的相关技术 使用 Node.js 的 express 框架搭建web服务 使用 express 中间件 body-parse ...

  6. Node.js 学习笔记之四:使用数据库

    这部分示例将示范SQLite3.MongoDB这两种不同类型的数据库在 Node.js 中的使用方法.首先,我们要在code目录下执行mkdir 06_database命令来创建用于存放这一组示例的目 ...

  7. NodeJs连接操作MongoDB数据库

    NodeJs连接操作MongoDB数据库 一,介绍 MongoDB是一种文档导向数据库管理系统,由C++撰写而成.介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作. Mongo ...

  8. 二十六、Nodejs 操作 MongoDb 数据库

    一. 在 Nodejs 中使用 Mongodb 前面的课程我们讲了用命令操作 MongoDB,这里我们看下如何用 nodejs 来操作数据库需要引包: npm install mongodb --sa ...

  9. NodeJS操作MongoDB数据库

    一.node.js对于mongodb的基本操作 1.数据库的开机 首先我们要先对数据库进行开机的操作,建立一个文件夹用于存放数据库文档.如D:\mongo,接下去在cmd当中键入命令-> mon ...

随机推荐

  1. [BZOJ3144][HNOI2013]切糕(最小割)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3144 分析:神题不解释 http://www.cnblogs.com/zig-zag/ ...

  2. latex中页面距离的设置

    1.页面设置 a4 会给你一个较小的页面,为了使用更多的控制,可用 geometry宏包和命令 \layout . 2.改变长度 在latex里改变长度的命令是 \addtolength 和 \set ...

  3. NIO框架Mina学习

    前言: 找了篇文章看了看,nio框架数Mina用的最多! 代码: 服务端: package com.mina; import java.net.InetSocketAddress; import ja ...

  4. AlertDialog之常见对话框(单选对话框、多选对话框、进度条对话框)

    单选对话框,顾名思义就是只能选一项(setSingleChoiceItems(Items,)) public void click(View v){ //创建对话框类 AlertDialog.Buil ...

  5. Activity之多启动图标

    如果想要Activity有多个启动图标,只需要在manifest.xml文件中配置一下就可以了,直接上代码: 1 <application 2 android:allowBackup=" ...

  6. No goals have been specified for this build

    在pom.xml文件中build后面加上<defaultGoal>compile</defaultGoal>

  7. 我的第一个DMZ方案实践

    方案提出的初衷:外网需要定时和不定时推送数据到内网服务器(只要求数据到达内网,没有要求直接连接到内网) 为什么不是直连到内网:每个人第一想到的是不安全,是的,没错不安全.内网的应用和外网的应用最明显的 ...

  8. 拼接sql是陷阱

    项目临时新增一个功能,此时我们习惯自己拼接一个sql. 更可怕的是,后期用户要求新增查询条件,甚至有上10个查询条件,这时的拼接更头疼,if append append(" status=@ ...

  9. 长串英文数字强制折行解决办法css

    overflow: hidden; white-space: normal; word-warp: break-word; word-break: break-all;/*Only work in I ...

  10. Apache Shiro和Spring Security的详细对比

    参考资料: 1)Apache Shiro Apache Shiro:http://shiro.apache.org/ 在Web项目中应用 Apache Shiro:http://www.ibm.com ...