成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Node.js操作MongoDB數(shù)據(jù)庫

chaosx110 / 3376人閱讀

摘要:使用操作是基于開發(fā)的驅(qū)動,可以在異步的環(huán)境下執(zhí)行。比如,啟動,直接在終端輸入就可以啟動啦默認(rèn)運(yùn)行在。還可以自定義端口或者輸入的使用首先新建一個名為的文件夾,該文件夾就是數(shù)據(jù)庫目錄。

使用Mongoose操作MongoDB

Mongoose是基于node-mongodb-native開發(fā)的MongoDB nodejs驅(qū)動,可以在異步的環(huán)境下執(zhí)行。

關(guān)于在Mac下安裝和使用MongoDB可以看我之前的一篇文章:

文章傳送門:Mac下安裝MongoDB 及使用教程

MongoDB PATH環(huán)境變量配置

mongodb添加到環(huán)境變量中:$ vim ~/.zshrc,添加如下命令行:

export PATH="$PATH:/usr/local/mongodb/bin"

當(dāng)然前提是將解壓出來的文件移到/usr/local/mongodb目錄中。版本3.0.7

然后就可以在終端直接使用MongoDB命令,而不用每次都進(jìn)入MongoDB所在文件夾的目錄啦。

比如,啟動MongoDB,直接在終端輸入 $ mongo 就可以啟動啦

默認(rèn)運(yùn)行在 http://127.0.0.1:27017 。

還可以自定義端口:$ mongod --dbpath=data/db --port=27017或者輸入:$ mongo 127.0.0.1:27017

Mongoose的使用

首先新建一個名為mongo的文件夾,該文件夾就是數(shù)據(jù)庫目錄。然后在該目錄下安裝mongoose

$ npm install mongoose

在該目錄下新建一個名為script.js的文件:

var mongoose = require("mongoose");

var uri = "mongodb://username:password@hostname:port/databasename";
 uri = "mongodb://localhost/mongo";

mongoose.connect(uri);

//在Schma里定義數(shù)據(jù)類型
var BookSchma = new mongoose.Schema({ //定義一個Schema
    name: String,
    author: String,
    publishTime:Date
});

mongoose.model("Book",BookSchma);//將該Schema發(fā)布為Model

通過Model我們就可以創(chuàng)建、刪除和修改mongodb里面的文檔,MongoDB為我們提供了Schema,Schema則提供了數(shù)據(jù)類型和結(jié)構(gòu)的定義。

然后在該目錄下再新建一個名為insert.js的文件:

var mongoose = require("mongoose");
require("./script.js");
var Book = mongoose.model("Book");//Book為model name

var book = new Book({
    name: "MEAN Web Development",
    author: "trigkit4",
    publishTime: new Date()
});

book.save(function (err) {
    console.log("save status:",err ? "failed" : "success");
});

打開終端,進(jìn)入數(shù)據(jù)庫目錄(文件夾目錄),輸入$ node insert.js,不出意外應(yīng)該可以看到:

save status: success

find查詢操作,返回結(jié)果包含在數(shù)組里(單個的請使用findOne()

    
    var mongoose = require("mongoose");
    require("./script");
    
    var Book = mongoose.model("Book");
    
    /*
    
    find參數(shù):
    1.mongodb selector
    2.err:錯誤信息,results:查詢結(jié)果
     */
    
    Book.find({}, function (err,results) {
        if(err){
            console.log("error message",err);
            return;
        }
        console.log("results",results);
    });

$or(array)$and(array)

新建一個名為or.js的文件

var mongoose = require("mongoose");
require("./script");

var Book = mongoose.model("Book");

var condition ={
    $or: [
        {author: "trigkit4"},
        {author: "Mike"}
    ]
};
Book.find(condition, function (err, results) {
    if(err){
        console.log("condition error",err);
        return;
    }
    console.log("condition",condition,"results",results);
});

終端輸入$ node or.js,不出意外應(yīng)該能輸出:

condition { "$or": [ { author: "trigkit4" }, { author: "Mike" } ] }
 results [ { __v: 0,
    publishTime: Fri Nov 27 2015 22:13:14 GMT+0800 (CST),
    author: "trigkit4",
    name: "MEAN Web Development",
    _id: 565864fae48504c03d92f319 } ]

關(guān)于Array

ArrayJavaScript編程語言中并不是數(shù)組,而是集合,因此里面可以存入不同的值,以下代碼等價(jià):

var Schema1 = new Schema({array:[]});
var Schema2 = new Schema({array:Array});
var Schema3 = new Schema({array:[Schema.Types.Mixed]});
var Schema4 = new Schema({array:[{}]});
在Express中使用Mongoose

首先先安裝express-generator

$ npm install express-generator -g

安裝好后,在終端執(zhí)行:

$ express mongooseExpress

用來生成一個express實(shí)例。

然后我們在這個mongooseExpress文件夾下新建一個名為config的文件夾,然后在config下新建一個config.js文件:

module.exports = {
    mongodb: "mongodb://localhost/mongo"
};

在再config文件夾下新建一個名為mongoose.js的文件:

var mongoose = require("mongoose");
var config = require("./config");

module.exports = function () {
    var db = mongoose.connect(config.mongodb);//連接數(shù)據(jù)庫
    
    return db;//返回?cái)?shù)據(jù)庫實(shí)例
};

然后我們再新建一個名為models的文件夾,然后新建一個名為user.server.model.js的文件:

var mongoose = require("mongoose");
var UserSchema = new mongoose.Schema({
    uid: Number,
    username: String,
    createTime: Date,
    lastLogin: Date
});

mongoose.model("user",UserSchema);

然后在剛才的mongoose.js中添加如下代碼:

require("../models/user.server.model.js");

打開app.js,添加如下代碼:

var mongoose = require("./config/mongoose");
var db = mongoose();
使用Mongoose讀取數(shù)據(jù)

首先打開routes文件夾下的users.js文件,添加如下代碼:

var mongoose = require("mongoose");
var User = mongoose.model("User");

router.get("/test", function (req, res, next) {
  var user = new User({
    uid: 123,
    username: "trigkit4"
  });

  user.save(function (err) {
    if(err){
      res.end("Error");
      return next();
    }
    
    //find({})意為返回所有文檔
    User.find({}, function (err, results) {
      if(err){
        res.end("Error");
        return next();
      }
      res.json(results);//以json數(shù)據(jù)類型返回值
    })
  })
});

最后,打開終端,進(jìn)入mongooseExpress目錄,執(zhí)行

$ npm install

package.json的依賴安裝好后,再執(zhí)行:

$ npm install mongoose --save

在終端輸入cat package.json,可以看到

{
  "name": "mongooseExpress",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "express": "~4.13.1",
    "jade": "~1.11.0",
    "mongoose": "^4.2.8",
    "morgan": "~1.6.1",
    "serve-favicon": "~2.3.0"
  }
}

可以看到"start": "node ./bin/www",因此,啟動腳本需要在終端執(zhí)行

$ node bin/www

然后打開另外一個窗口,輸入:

curl localhost:3000/users/test

可以看到node bin/www那端的窗口顯示GET / 200 28.562 ms - 170

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/18792.html

相關(guān)文章

  • 初嘗node.js + Express + MongoDB + Vue.js 項(xiàng)目構(gòu)建(2)

    摘要:使用內(nèi)在模塊發(fā)送響應(yīng)數(shù)據(jù)監(jiān)聽端口終端打印如下信息使用框架本項(xiàng)目使用的框架來起服務(wù)器。數(shù)據(jù)庫中文檔每一行的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和基本一樣,所有存儲在集合中的數(shù)據(jù)都是格式,是一種類的一種二進(jìn)制形式的存儲格式,簡稱。 前言 經(jīng)過上一篇經(jīng)濟(jì)基礎(chǔ)構(gòu)建的完成,那么現(xiàn)在正式開始碼代碼吧! 項(xiàng)目架構(gòu) showImg(https://segmentfault.com/img/bVNkQM?w=322&h=58...

    kevin 評論0 收藏0
  • 初嘗node.js + Express + MongoDB + Vue.js 項(xiàng)目構(gòu)建(2)

    摘要:使用內(nèi)在模塊發(fā)送響應(yīng)數(shù)據(jù)監(jiān)聽端口終端打印如下信息使用框架本項(xiàng)目使用的框架來起服務(wù)器。數(shù)據(jù)庫中文檔每一行的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和基本一樣,所有存儲在集合中的數(shù)據(jù)都是格式,是一種類的一種二進(jìn)制形式的存儲格式,簡稱。 前言 經(jīng)過上一篇經(jīng)濟(jì)基礎(chǔ)構(gòu)建的完成,那么現(xiàn)在正式開始碼代碼吧! 項(xiàng)目架構(gòu) showImg(https://segmentfault.com/img/bVNkQM?w=322&h=58...

    zhisheng 評論0 收藏0
  • node.js操作Mongodb數(shù)據(jù)庫

    摘要:接下去完成與本機(jī)上數(shù)據(jù)庫的連接,這是一個異步函數(shù),當(dāng)連接完成之后,觸發(fā)執(zhí)行其回調(diào)函數(shù),參數(shù)指代這個數(shù)據(jù)庫本身。同樣是在完成數(shù)據(jù)庫連接的回調(diào)函數(shù)當(dāng)中對這個對象進(jìn)行操作。當(dāng)完成修改操作之后觸發(fā)執(zhí)行其回調(diào)函數(shù),表示對修改結(jié)果的反饋。 一、node.js對于mongodb的基本操作 1、數(shù)據(jù)庫的開機(jī) 首先我們要先對數(shù)據(jù)庫進(jìn)行開機(jī)的操作,建立一個文件夾用于存放數(shù)據(jù)庫文檔。如D:mongo,接下去...

    SKYZACK 評論0 收藏0
  • Node中基于Mongoose對MongoDB進(jìn)行增刪查改(CRUD)操作(一)

    摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫,在這個節(jié)目可以對數(shù)據(jù)庫進(jìn)行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對進(jìn)行增刪查改操作的簡單介紹,以后會有進(jìn)階的文章。 關(guān)鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢,增加,修改,刪除 工具介紹 Mon...

    lemon 評論0 收藏0
  • Node中基于Mongoose對MongoDB進(jìn)行增刪查改(CRUD)操作(一)

    摘要:如圖連接成功后,顯示你的數(shù)據(jù)庫,在這個節(jié)目可以對數(shù)據(jù)庫進(jìn)行操作。如圖安裝與加載首先假定你已經(jīng)安裝了,命令行工具輸入在使用的文件中即可。創(chuàng)建讀取更新刪除單值讀取上文是在中基于對進(jìn)行增刪查改操作的簡單介紹,以后會有進(jìn)階的文章。 關(guān)鍵詞:mongodb安裝 mongoose使用 robomongo mongoose的CRUD操作 mongoose的查詢,增加,修改,刪除 工具介紹 Mon...

    SillyMonkey 評論0 收藏0

發(fā)表評論

0條評論

chaosx110

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<