1. 程式人生 > >從零開始優雅的使用mongodb實例

從零開始優雅的使用mongodb實例

保存數據 blank 創建工程 blog 打開 基本 entity 失敗 exports

基本連接

一、創建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‘);
var kittyModel=mongoose.model(‘kitty‘);

/* GET home page. */
router.get(‘/‘, function(req, res, next) {
  res.send(‘又添加一條數據‘);
//將該Schema發布為Model,第一個參數為集合名
var kittyModel = mongoose.model(‘kitty‘);

//用module創建kitty實體
var kittyEntity = new kittyModel({ name: ‘new‘ });

//保存數據
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實例