Node.js学习笔记3-mongoose

  • 注意: 撰写本文目的主要是为了给自己做一个备忘录,如果你学过Node.js并且希望从本文中找到一些忘记的知识点,那么你可以阅读本文章。由于文章内讲解并不是很多,因此此文章并不适合小白入门使用。

1.认识mongoose

1.1.下载安装mongoose

npm install --save mongoose

1.2.在项目中引入mongoose

var mongoose = require("mongoose");

1.3.连接MongoDB

mongoose.connect("mongodb://数据库的ip地址:端口号/数据库名", {useNewUrlParser:true})

注意:

  • 如果端口号是默认端口号(27017),则可以省略端口号
  • 监听MongoDB数据库的连接状态
  • 在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接
  • 通过监视该对象的状态,可以来监听数据库的连接与断开

1.4.断开MongoDB数据库连接(一般不需要调用)

  • MongoDB数据库,一般情况下,只连接一次,连接一次以后,除非项目停止服务器关闭,否则连接一般不会断开
mongoose.disconnect()

// 数据库连接成功的事件
mongoose.connection.once("open",function())

// 数据库断开的事件
mongoose.connection.once("close",function())
  • Schema
  • Model
  • Document

连接MongoDB数据库:

//引入
var mongoose = require("mongoose")
//连接数据库
mongoose.connect("mongodb://127.0.0.1/mongoose_test", {useNewUrlParser:true})

mongoose.connection.once("open",function () {
    console.log("数据库连接成功~~~")
})

2.mongoose测试

  • 通过mongoose操作MongoDB非常简单,首先获取mongoose.Schama,然后创建Schema(模式)对象,然后创建Model,最后向数据库中插入数据。

2.1.简单使用mongoose

var mongoose = require("mongoose")

mongoose.connect("mongodb://127.0.0.1/mongoose_test", {useNewUrlParser:true})

mongoose.connection.once("open",function () {
    console.log("数据库连接成功~~~")
})

//将mongoose.Schema赋值给一个变量
var Schema = mongoose.Schema;

//创建Schema(模式)对象
var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:"female"   //设置字段类型并设置默认值
    },
    address:String
})

//通过Schema来创建Model
//Model代表的是数据库中的集合,通过Model才能对数据库进行操作
//mongoose.model(modelName,Schema);
//modelName 就是映射的集合名。mongoose会自动将集合名变成数
var StuModel = mongoose.model("student",stuSchema);

//向数据库中插入一个文档
//StuModel.create(doc,function(err){});
StuModel.create({
    name:"逍遥子",
    age:18,
    gender:"female",
    address:"南山"
},function (err) {
    if(err){
        console.log("插入文档失败");
        return;
    }else {
        console.log("插入成功");
    }
})

2.2.另一个Schema(模式)

//创建Schema(模式)对象
var qusSchema = new Schema({
    author:String,
    topic:String,
    content:String,
    openid:String,
    avatural:String,
    subject:String,
    nickName:String,
    time:String,
    image:{
        type:String,
        default:"defaultimg.jpg"
    },
})

2.3.Document

//创建Schema(模式)对象
var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:"female"   //设置字段类型并设置默认值
    },
    address:String
})

var StuModel = mongoose.model("student",stuSchema);

//创建一个Document
var stu = new StuModel({
    name: "孙悟空",
    age: 19,
    gender: "male",
    address: "花果山"
})

stu.save(function (err) {
    if(!err){
        console.log("保存成功");
    }
});

2.MongoDB配置

mongodbset.js

var mongoose = require("mongoose")

mongoose.connect("mongodb://127.0.0.1/fengwoForum", {useNewUrlParser:true})

mongoose.connection.once("open",function () {
    console.log("数据库连接成功~~~")
})

//将mongoose.Schema赋值给一个变量
var Schema = mongoose.Schema;

exports.Schema = Schema;
exports.mongoose = mongoose;

testMap.js

var Schema = require("../module/mongodbset.js").Schema
var mongoose = require("../module/mongodbset.js").mongoose

//创建Schema(模式)对象
var qusSchema = new Schema({
    author:String,
    topic:String,
    content:String,
    openid:String,
    avatural:String,
    subject:String,
    nickName:String,
    time:String,
    image:{
        type:String,
        default:"defaultimg.jpg"
    },
})

var QusModel = mongoose.model("question",qusSchema);

module.exports = QusModel;

testController.js

var queModel = require("../database-map/testMap.js");

exports.addQuestion = function (callback) {
    queModel.create({
        author:"王顺顺666",
        topic:"从前有个山",
        content:"山上有个寺庙!",
        openid:"10000001",
        avatural:"https://www.xztywss.top/img/aaa.png",
        subject:"大物2",
        nickName:"庙里有个老和尚",
        time:"2019/1/5 14/13",
        image:"defaultimg.jpg"
    },function (err) {
        if(err){
            callback(err);
            return;
        }else {
            return;
        }
    })
}

exports.getQuestion = function (callback) {
    queModel.find({},function(err,docs){
        if(err){
            callback(err,null)
            console.log(err);
            return;
        }
        callback(null,docs);
        return;
    })
}

文集推荐:

Java基础方法集1
Python基础知识完整版
Spring Boot学习笔记
Linux指令进阶
Java高并发编程
SpringMVC基础知识进阶
Mysql基础知识完整版
健康管理系统学习花絮(学习记录)
Node.js基础知识(随手笔记)
MongoDB基础知识
Dubbo学习笔记
Vue学习笔记(随手笔记)

声明:发表此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本我们(QQ:981086665;邮箱:981086665@qq.com)联系联系,我们将及时更正、删除,谢谢。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • mongoose知识 定义:mongoose为mongodb的进化版,相当于原生JS和jQuery的关系; 步骤:...
    果木山阅读 618评论 0 4
  • 初学Node.js接触到MongoDB数据库,阅读资料中推荐的都是Mongoose模块,可以更加方便的对数据库进行...
    LnEoi阅读 31,418评论 9 49
  • mongoose入门 MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、...
    huilegezai阅读 4,444评论 0 14
  • 原文地址 本文简单的介绍了数据库,以及如何在 Node/Express 中应用他们。之后展示如何使用Mongoos...
    前端幼儿班阅读 5,156评论 1 5
  • 四级过掉啦!!!接下来努力过过六级 今年有好多小目标,目前实现了一些,还会继续加油的。 想成为比去年的自己更优秀的...
    单一双二i阅读 202评论 0 1