基本连接

一、创建express工程testmon

express testmon

二、精简app.js

var express = require("express");
var app = express();
app.get('/', function(req, res) {
res.send('访问一次增加一条数据');
}); var server = app.listen(3000,function(){
console.log("请在浏览器访问:http://localhost:3000");
});

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

npm install --save mongoose

四、修改app.js

var express = require("express");
var app = express();
app.get('/', function(req, res) {
res.send('Hello, tinyphp');
});
var server = app.listen(3000,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' }); //保存数据
kittyEntity.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('成功插入数据');
}
});
/************/

打开另外一个cmd窗口,先查询一次数据,然后重新启动工程,再查询一次数据发现数据成功添加上了

分离改造

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

config.js 数据库配置信息

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

mongoose.js 数据库连接文件

//引入mongoose模块
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');
/*****Schema使用*****/ //定义kitty属性
var kittySchema = mongoose.Schema({
name: String
}); mongoose.model('kitty',kittySchema);

app.js

var express = require("express");

var mongoose = require('./config/mongoose.js');
var db=mongoose(); var app = express(); var add=require('./routes/add');
app.use('/add',add); var server = app.listen(3000,function(){
console.log("请在浏览器访问:http://localhost:3000");
});

add.js 控制访问一次http://localhost:3000/add插入一次数据

var express = require('express');
var router = express.Router(); var mongoose =require('mongoose');
//将该Schema发布为Model,第一个参数为集合名
var kittyModel=mongoose.model('kitty'); /* GET home page. */
router.get('/', function(req, res, next) {
res.send('又添加一条数据'); //用module创建kitty实体
var kittyEntity = new kittyModel({ name: 'tom' }); //保存数据
kittyEntity.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('成功插入数据');
}
}); }); module.exports = router;

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

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

相关文章:

安装express并创建工程

window平台安装MongoDB

下载地址

从零开始优雅的使用mongodb实例的更多相关文章

  1. 单台MongoDB实例开启Oplog

    背景 随着数据的积累,MongoDB中的数据量越来越大,数据分析团队从数据库中抽取变化数据(假如依据栏位createdatetime,transdatetime),越来越困难.我们知道MongoDB的 ...

  2. MongoDB实例重启失败探究(大事务Redo导致)

    1.实例重启背景 收到监控组同学反馈,连接某一个MongoDB实例的应用耗时异常,并且出现了超时.查看数据库监控平台,发现此实例服务器的IO异常飙升,而查看副本集状态(rs.status()),主从是 ...

  3. asp.net的mongodb实例

    mongodb为2.6版本, .net是4.0, c#接口时1.7. 运行环境为windows8 with visual studio2010 注意事项:在mongodb中使用地理位置存储信息且动用到 ...

  4. 利用golang优雅的实现单实例

    平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的单例模式.针对单例模式,java中又出现了饿汉模式.懒汉模式,再配合synchronized同步关键字来实 ...

  5. PHP 操作Mongodb 实例

    缩略版本<?php //1.连接MongoDB $mongo = new Mongo(); $mongo = new Mongo("mongodb://username:passwor ...

  6. python操作mongodb实例

    安装pymongo扩展 import pymongo; client = pymongo.MongoClient(host='10.48.176.170',port=27017); db = clie ...

  7. 从零开始配置Ubuntu 14.04&SSH&curl&Git&MongoDB&Node.js

    从零开始配置Ubuntu 14.04 从零开始配置Ubuntu 14.04,记录配置服务的过程,安装组件如下: SSH curl Git MongoDB Node.js ... ​ Ubuntu 安装 ...

  8. MongoDB在已有账号的实例下还原数据库报错的分析(error applying oplog)

    一. 背景 今天在MongoDB 4.0.4版本下,在还原恢复数据库时报错. 主要错误为: Failed: restore error: error applying oplog: applyOps: ...

  9. [转]MongoDB更新操作replaceOne()实例讲解

    最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了.这篇文章默认读者是知道如何安装MongoDB.如何运行MongoDB实例以及了解了MongoDB中的collection.do ...

随机推荐

  1. Z-index研究 opacity和z-index一起使用

    Z-index研究 opacity和z-index一起使用   关于z-index的真正问题是,很少有人理解它到底是怎么用.其实它并不复杂,但是如果你从来没有花一定时间去看具体的z-index相关文档 ...

  2. Luogu P4944 【PION贪吃蛇】

    简单模拟题 用一个数据结构存储这条蛇 考虑蛇的移动 1,如果死了,就把整个蛇清空,所有位置标记为食物 2,如果吃了东西,把这个位置更新为蛇头 3,如果正常走路,这个位置设为蛇头,同时删掉尾巴 蛇的存储 ...

  3. poj3666 线性dp

    要把一个序列变成一个不严格的单调序列,求最小费用 /* 首先可以证明最优解序列中的所有值都能在原序列中找到 以不严格单增序列为例, a序列为原序列,b序列为升序排序后的序列 dp[i][j]表示处理到 ...

  4. hdu3255扫描线:带权面积交转体积交

    手贱把i打成j,调了半天 /* 面积并转体积并,长方体高度为作物价格 算体积并:在笛卡尔坐标系的y轴上建立线段树cnt记录区间被完全覆盖的次数,sum记录区间被覆盖的总长度 以平行于xoy的平面从下往 ...

  5. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  6. List遍历三种方法:1.for 2.增强性for 3.迭代器

    package chapter09; import java.util.ArrayList;import java.util.Iterator;import java.util.List; /* * ...

  7. canvas图像保存

    很多时候绘制完成的图片需要保存,那么我们就可以使用到Canvas API来完成这最后一步! Canvas API使用toDataURL方法把绘画的状态输出到一个data URL中然后重新装载,然后我们 ...

  8. 《剑指offer》-青蛙跳台阶II

    一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 其实题目很水...就是一个等比数列通项公式嘛 f(0)=1 f(1)=1 f(n)=f( ...

  9. 查看Windows系统里的进程已运行的时间

    搜索 ProcessExplorer ,可以去微软下载它.右键点击项类,selcet conlumns...在 Process Performance 里 选择start time.有了进程的启动时间 ...

  10. 使用共同函数,将PNotify弹出提示框公用

    PNotify(http://sciactive.github.io/pnotify/)是个不错的jquery库(好像最新版的pnotify已不需要jquery了). 使用它来实现网站常用的提示框,很 ...