美文网首页
Mongoose的应用和保存数据

Mongoose的应用和保存数据

作者: SodaSea | 来源:发表于2017-06-22 10:33 被阅读0次

    ORM介绍

    ORM的全称是Object Relational Mapping,即对象关系映射。它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。

    Mongodb介绍

    Mongodb与关系型数据库的对应关系图


    image.png

    Mongoose介绍

    Mongoose是一个提供了与MongoDB相映射的Node.js库,它在Node.js中与ORM(Object Relational Mapping)有着类似的接口。
    即:Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。

    Mongoose在后端开发的应用

    【1】 先建立一个mongodb.js. 目的是用mongoose连接mongodb数据库,导出连接了该数据库的mongoose对象

    对exports的理解,exports.xx代表的是 当我require后赋给一个var后,可以用var_name.xx的形式去调用它.

    var mongoose = require('mongoose');
    //connect the database of mongo
    mongoose.connect('mongodb://localhost:27017/test1_carflow');
    
    exports.mongoose = mongoose;
    

    【2】 Flow.js, 用来生成Schema和Model,以及我们的save函数

    这个save函数内部是用model的save方法实现的,我们调用的时候传入obj(json),生成对应的model。

    module.export和export的区别

    //写法1
    exports.hello = function(){
        console.log(‘world’);
    }
    
    //写法2
    var f = {
    //'hello' is the function's name
        hello : function(){
            console.log(‘world’);
        }
    }
    
    module.exports = f;
    

    假设我们写的这个模块的文件名为hello.js,执行下面的代码, 上面两种效果一样

    var h = require(‘hello’);
    h.hello();
    

    如果此模块是一个类,就应该直接赋值module.exports,这样调用者就是一个类构造器,可以直接new实例
    【3】使用的时候先生成Json对象,再调用Flow.js的函数

    RoboMongo工具

    mongodb可视化工具,mongod启动后,用数据库名进行搜索连接。
    效果如图

    对Mongoose的思考(24/06/2017更新)

    一直很纳闷的就是Mongodb最大的特点之一就是同个表(collection)下不同document可以有不同的数据存储类型和数量,但是Mongoose的Schema和Model的创建就是结构化,就跟Mysql这些关系型数据库一样了!所以网上也有人看法是Mongoose也是给传统数据库开发者提供一个过渡。
    所以为了schemaless,Mongoose提供了一种Schema.Type——混合模型
    Schema.Types.Mixed是Mongoose定义个混合类型,该混合类型如果未定义具体形式。因此,如果定义具体内容,就直接使用{}来定义,以下两句等价
    var AnySchema = new Schema({any:{}}); var AnySchema = new Schema({any:Schema.Types.Mixed});
    混合类型因为没有特定约束,因此可以任意修改,一旦修改了原型,则必须调用markModified()
    person.anything = {x:[3,4,{y:'change'}]} person.markModified('anything');//传入anything,表示该属性类型发生变化 person.save();

    错误:未结束的字符串常量(05/07/2017更新)

    今天运行用来存储用户数据的init_user.js文件失败,弹出这样的错误
    解决办法就是复制代码重新运行就行了。

    Reference

    区别:exports&module.exports
    http://www.ghostchina.com/module-exports-and-exports-in-node-js/
    基本概念: require, exports
    https://github.com/pzxwhc/MineKnowContainer/issues/39

    mongoose, js object, json, json string(25/07/2017更新)

    var docu_data = new pData.ParkingModel(jo_data);
    

    上面代码是Mongoose利用Model新建一个Document实例
    jo_data的类型是object,那么问题来了,object必须要json object吗?
    我发现不是,在Schema确立的情况下,只要是object就可以,就是说{name: "frank"}跟{"name": "frank"}都没问题。
    附:跟json有关常用方法:

    1. JSON.stringfy(); //JS object to json string

    JSON.stringify({ x: 5 }); // '{"x":5}'

    1. JSON.parse(); //json string to JS object

    JSON.parse('{"x":5}'); //{x: 5}

    相关文章

      网友评论

          本文标题:Mongoose的应用和保存数据

          本文链接:https://www.haomeiwen.com/subject/uyyoqxtx.html