zoukankan      html  css  js  c++  java
  • 初识Mongoose

          一直在学前端的东西,突然想了解一下后端的同学都在干些什么,,于是去看了慕课网上的一个node建站视频,其实它对于学习者的要求很明确,是要对nodejs,mongodb,mongoose,jade,bootstrap都有所了解但实践不足的人准备的课程,但如果你跟我一样完全都没有了解过后端和数据库的内容就开始了mongoose的使用,希望我的理解能对你有所帮助。这里并没有详细的说明mongoose的使用,只是说一下自己的理解,详细的使用以及API的查询请自行去官网查找。错漏之处还是希望大神在评论中指出。

    mongoose官网的quick start(刚接触的话看这个再抄一遍还是比较快能上手的,不过建议先看完这篇文章再去看这个快速入门的教程。)

    在正式开始之前,你应该已经安装了node和mongodb了,还没装的去官网上装一下吧。

      首先,我谈一下自己对mongoose的理解。

      1.首先你得对mongodb有一个大概的了解,这是一个数据库

           2.mongoose是用来操作mongodb的

           3.mongoose是一个nodejs的模块

      把上面三点总结一下也就是说Mongoose能让你以写js的方式来操作数据库,而不是在mongodb中用mongo工具的命令行形式来操作数据库

     

            网上mongoose的教程比较多也比较全,这里就只举一个创建数据库的例子,重点是谈一下自己的理解,以及自己遇到的坑。

      视频中(没看视频也没关系)在介绍了SchemasModelsDocuments之后直接就开始用mongoose的模块开始噼里啪啦的写了,官网上也是如此,看的我是一脸懵逼,相信没接触过mongodb的人也是如此,当我看到mongoose官网上最开始的两段代码时我就已经晕了:

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/test');

    test?test哪里来的,网上说是本机的test数据库,……?什么意思,本机的数据库又在哪儿?

    事实上,在你正式用mongoose之前,你是需要用mongodb来进行一下配置的,配置中最重要的一步就是你必须要在电脑上找一个地方来放你的数据库文件,mongodb或者说你直接用mongoose的话它是不会帮你做这件事的。比如说,我是在d盘下创建的,我创建的的目录就是 d:datadb,所有的数据库文件就放在了db这个文件夹当中。那么具体的创建过程可参见菜鸟教程(里面还有怎么安装,一举两得~)。

    菜鸟教程:Windows平台下mongoose的安装以及使用

    还有一个更加详细一点的:mongodb开发学习,有点多,没必要看完,看看怎么启动mongodb,怎么新建一个数据库,怎么插入一条数据即可

    其中的配置MongoDB服务如果你照着做能成功的话就好,操作失败的话就暂且放一放,不用这样的方式也可以打开:

    直接在命令行工具中输入:

    D:softwareMongoDBServer3.0in>mongod.exe --dbpath "d:datadb" 
     
    --dbpath之前那一长串是为了启动mongod,路径的话参见你自己安装MongoDB的目录,

    后面那一小串是你准备放数据库文件的地方(而配置MongoDB服务只是为了简写而已,毕竟这一行代码也太长了,每次都打很麻烦

    其余的也可以看一下,特别是用mongodb插入数据什么的,毕竟也就几行代码(如果你真的开始看了的话,那么这里就再插入一个小知识点:在mongo命令行工具中使用 use test命令是切换到test这个数据库,如果没有test这个数据库则会自动创建一个test数据库。)

    好啦,说了这么多,其实最重要的就是:

    1.你得通过配置mongodb来找一个地方放你的数据库文件

    2.在你想要使用mongoose的时候打开mongodb数据库

    如果你已经配置完成就可以进入下一步:正式开始写mongoose模块了。我们新建一个文件,就叫它app.js吧,首先然后安装mongoose模块就不说了。

    然后根据官网抄的例子:

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost:27017/test', { useMongoClient: true });
    
    var db = mongoose.connection;
    //这里就是说连接成功的话会打印出coneect success,失败的话会打印出失败的信息
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function() {
      console.log('connect success')
    });

    那么如果你已经打开了mongodb数据库,那么在命令行中执行

    node app.js  //connect success

    顺利的话命令行中会打印出 connect success

    但是虽然连接成功了,但实际上这个数据库还并没有真正被创建。这里借用上面的《mongodb开发学习》一文中的话来说就是它是将要创建一个test数据库,如果你打开mongo工具它显示的也是connecting  to test,直到你在里面加入一条数据之后,test这个数据库才会真正的被创建,mongoose也是如此。这里为了更加形象化,我们用一个可视化工具Robomongo来展示一下。

    如果说test数据库真的被建立了的话,应该会是下面这样:

    那么如何根据mongoose来创建一条数据呢?我们还是来看官网的例子(代码稍稍做了简化)。

    //Schema
    var kittySchema = mongoose.Schema({
        name: String
    });//Model
    var Kitten = mongoose.model('Kitten', kittySchema);
    
    //Documents
    var silence = new Kitten({ name: 'Silence' });
    
    //将数据保存到数据库里面去,没有这一步,数据库是不会被建立的
    silence.save();

    那么mongoose和mongodb是一个对应的管理,比如说Model对应的是mongodb中的Collection,正所谓一图胜千言,我们还是来看图:

    可以看到我们Model中的Kittens就对应着Mongodb中的Kittens集合(Collections),而这个集合中的第一条数据就是我们刚才利用Mongoose创建的那个Document,它的name:‘Silence’也和图中是对应的

    这样我们创建test数据库的工作就完成了,不知道大家对于mongoose和mongodb之间的关系有没有一个大概的理解了。

    下面这一行代码与MongoDB的 use test 异曲同工,有我就连接,没有我就创建一个

    mongoose.connect('mongodb://localhost:27017/test', { useMongoClient: true });

    对了,上面留了一个坑,现在填起,关于MongoDB配置Windows服务,一开始也是半天都没弄出来,后来看到官网上有相关的知识,讲的很清楚,代码也很简单,这里直接贴出链接:Install on Windows

    英文不太好,但大概意思是说如果你一开始安装Mongodb的时候都是默认安装的就可以正常的安装Windows服务,如果你是安装在了自定义的目录下就要有一些额外的操作,不过都是代码,第一种不行就试试第二种吧(好不健康的思想啊~~)。

    上面给了很多链接,主要是因为我比较懒,其次是因为这些东西网上一搜大都是一样的,没必要再说,而且这篇文章主要是讲自己的理解,详细的东西也没有多说。

    博客并不经常写,所以文章脉络也比较杂乱,大家见谅吧,文章有错漏的话记得向我提出。

  • 相关阅读:
    开源中最好的Web开发的资源
    数据结构慕课PTA 05-树9 Huffman Codes
    【读书笔记】C++ primer 5th 从入门到自闭(一)
    【PTA】浙江大学数据结构慕课 课后编程作业 03-树1 树的同构
    nuvoton980 generate yaffs2 format rootfs (九)
    nuvoton980 burn firmware to spi-nand (八)
    nuvoton980 kernel support bridge and nat(七)
    nuvoton980 kernel support tf card(六)
    nuvoton980 kernel support leds-gpio (五)
    nuvoton980 kernel support spi nand boot and rtc (四)
  • 原文地址:https://www.cnblogs.com/bax-life/p/7795061.html
Copyright © 2011-2022 走看看