平凡之路

1、创建express项目

express mongooseExpress

2、最简express

var express = require("express");
var app = express();
app.get('/', function(req, res) {
res.send('Hello, tinyphp');
});
,function(){
    console.log("请在浏览器访问:http://localhost:3000");
});

3、进入工程目录安装mongoose并引入依赖:

npm install --save mongoose

4、修改app.js

var express = require("express");
var app = express();
app.get('/', function(req, res) {
res.send('Hello, tinyphp');
});
,function(){
    console.log("请在浏览器访问:http://localhost:3000");
});

//引入mongoose模块
var mongoose = require('mongoose');
//创建数据库连接
var db=mongoose.connect('mongodb://localhost:27017/test');

//检查是否连接成功
db.connection.on("error",function(error){
    console.log("数据库连接失败:"+error);
});

db.connection.on("open",function(error){
    console.log("++++++数据库连成功++++++");
});

/*****Schema使用*****/

//定义kitty属性
var kittySchema = mongoose.Schema({
    name: String
});
//将该Schema发布为Model,第一个参数为集合名
var kittyModel = mongoose.model('kitty', kittySchema);

//用module创建kitty实体
var kittyEntity = new kittyModel({ name: 'tinyphp99' });
console.log("添加数据"+kittyEntity.name);  //打印实体名字
//保存数据
kittyEntity.save();

/************/

成功插入一条记录

这里可以看见,所有的操作都是在app.js里面实现的,怎么把他们分离出来呢?

想着想着去肯德基不小心跟服务员说:要两串骨肉分离吧...

开始改造

下面我们把它改装为一访问http://localhost:3000/add就自动添加数据,

config.js 数据库配置信息

module.exports={
    mongodb:"mongodb://localhost:27017/test"
}

mongoose.js 数据库连接文件

var mongoose = require('mongoose');
var config= require('./config.js');

module.exports=function(){
    var db = mongoose.connect(config.mongodb);
        //检查是否连接成功
    db.connection.on("error",function(error){
        console.log("数据库连接失败:"+error);
    });

    db.connection.on("open",function(error){
        console.log("++++++数据库连成功++++++");
    });
    //导入模块
    require('../models/kitty.model.js');
    return db;
}

kitty.model.js 导出Model用于生成实体

var mongoose =require('mongoose');

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

mongoose.model('kitty', kittySchema);

add.js 使用路由简化启动文件逻辑

var express = require('express');
var router = express.Router();
//引入mongoose
var mongoose =require('mongoose');

var kittyModel = mongoose.model('kitty');

/* GET users listing. */
router.get('/', function(req, res, next) {
    //用module创建kitty实体
var kittyEntity = new kittyModel({ name: 'china' });
    //保存数据
  kittyEntity.save();
  res.send("添加数据:"+kittyEntity.name);  

});

module.exports = router;

app.js

var express = require("express");

//数据库连接
var mongoose =require('./config/mongoose.js');
var db =mongoose();
var add=require('./routes/add');
var app = express();

//使用路由,便于访问add直接添加数据
app.use('/add', add);

,function(){
    console.log("请在浏览器访问:http://localhost:3000");
});

执行node app.js

浏览:http://localhost:3000/add

数据name为China的信息成功添加!

温馨提示:测试多了,不妨使用db.table.drop() 把整个集合删除掉噢

注意事项:

mongoose的初始化,要在 express 之前的,

路由里因为用到kittyModel所以引入要在mongoose初始化后,不然会提示出错“Schema hasn't been registered ...”, 自己把上面的顺序调换测试下更深刻噢~

下载地址

在express项目中有效组织和使用mongoose的更多相关文章

  1. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  2. 在express项目中使用formidable & multiparty实现文件上传

    安装 formidable,multiparty 模块 npm install formidable,multiparty –save -d 表单上传 <form id="addFor ...

  3. 在express项目中使用redis

    在express项目中使用redis 准备工作 安装redis 安装redis桌面管理工具:Redis Desktop Manager 项目中安装redis:npm install redis 开始使 ...

  4. 【转】在Express项目中使用Handlebars模板引擎

    原文:http://fraserxu.me/2013/09/12/Using-Handlebarsjs-with-Expressjs/ 最近在用Expressjs做一个项目,前后端都用它来完成.自己之 ...

  5. 浅谈 OneAPM 在 express 项目中的实践

    [编者按]OneAPM 运营团队,近日在 github 上发现了一篇文章,特别奉献给大家.本文作者王宇先生从2015年年初就开始使用我们的产品,也是OneAPM 的忠实用户. OneAPM 是一个优秀 ...

  6. Atitit.css 规范 bem  项目中 CSS 的组织和管理

    Atitit.css 规范 bem  项目中 CSS 的组织和管理 1. 什么是BEM?1 1.1. 块(Block)2 1.2. 元素(Element)2 1.3. BEM树(和DOM树类似).3 ...

  7. 基于Node 的http转发demo,项目中请使用express+http-proxy-middleware

    var http = require("http"); var data = ''; function getData() { const options = { host: 'w ...

  8. 项目中使用express,只是单纯项目中使用

    安装express npm install express --save-dv 建议安装到dev依赖里面 安装body-parse npm install body-parser --save-dev ...

  9. Express 项目,res.cookie() 设置 Cookie 无法被保存在浏览器的 Application 中

    res.cookie() 给客户端响应头封装的 Cookie 无法被保存在客户端浏览器的 Application 中,只能在 Set-Cookie 中看到有这个值: 在前后端分离项目中,存在跨域问题, ...

随机推荐

  1. 字符串处理 Codeforces Round #296 (Div. 2) B. Error Correct System

    题目传送门 /* 无算法 三种可能:1.交换一对后正好都相同,此时-2 2.上面的情况不可能,交换一对后只有一个相同,此时-1 3.以上都不符合,则不交换,-1 -1 */ #include < ...

  2. TYVJ P1020 寻找质因数

    做题记录:2016-08-08 描述 给出N个数字,试求质因数最大的数字. 输入格式 第一行,一个整数N,表示数字个数.接下来N行,每行一个整数A_i,表示给出的数字. 输出格式 一个整数,表示质因数 ...

  3. CKEditor实现图片上传

    本人用的CKEditor版本为4.3 CKEditor配置和部署参考CKEditor4.x部署和配置. CKEditor编辑器的工具栏中初始的时候应该是这样子的,没有图片上传按钮 并且预览中有一堆火星 ...

  4. jquery-mobile表单提交问题

    关于使用jquery-mobile表单提交遇到的问题     当你使用了jquery-mobile的时候,如果你在前台提交一个了一个form表单,而在后台你处理完业务逻辑之后想要重定向到另一个方法或页 ...

  5. Java主要有那几种文件类型,各自作用

    java提供了两类数据类型:基本类型,引用类型. 1.基本类型包括:boolean ,byte,char,int,short,float,long,double,值得注意的是:在原始数据类型中,除了b ...

  6. IOS第四天(3:数组的排序和乱序)

    数组的升序和降序 - (void)sortWith:(NSArray *)array { // 排序 array = [array sortedArrayUsingComparator:^NSComp ...

  7. Network | TCP congestion control

    拥塞控制算法:1. 加性增.乘性减:2. 慢启动:3. 对超时事件作出反应: 整体过程如下: 慢启动->到达阈值->加性增(窗口+1个MSS), 这个阶段叫拥塞避免(CA)->3个冗 ...

  8. Java实战equals()与hashCode()

    一.equals()方法详解 equals()方法在object类中定义如下: 代码 public boolean equals(Object obj) { return (this == obj); ...

  9. Maven问题总结:could not resolve archetype xxxxxxx from any of the configured repositories

    错误提示 Eclipse中通过Archetype创建Maven项目时报错:Could not resolve archetype xxxxxxx from any of the configured ...

  10. twitter storm 源码走读之5 -- worker进程内部消息传递处理和数据结构分析

    欢迎转载,转载请注明出处,徽沪一郎. 本文从外部消息在worker进程内部的转化,传递及处理过程入手,一步步分析在worker-data中的数据项存在的原因和意义.试图从代码实现的角度来回答,如果是从 ...