nodejs数据库操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Divide_/article/details/52517861

Nodejs获取表单数据实现Mongodb数据库的CURL操作

在学习的时候,忘了nodejs获取请求的方式,这里就贴出来加深下印象

nodejs获取post请求和get请求

get请求

用url模块处理req.url就能够获取get参数

    var url = require("url");
    //params就是get方法携带的参数
    var params = url.parse(req.url, true).query;

post请求

Post由于它的重量,所以不可能说接收就接收,它会存储接入中和接入完成两种状态,两种状态对应着回调方法,
即,当然数据处于接入中状态时,处理一种流程;当数据接入完成后,处理另一种流程。

    var postData = ""; 
    // 数据块接收中
    req.addListener("data", function (postDataChunk) {
        postData += postDataChunk;
    });
    // 数据接收完毕,执行回调函数
    req.addListener("end", function () {
        var params = querystring.parse(postData);
        console.log(params);
    });

准备工作Mongooser

  1. 名词解释

    • Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

    • Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对象

    • Entity : 由Model创建的实体,他的操作也会影响数据库

    注意:
    本学习文档采用严格命名方式来区别不同对象,例如:

    var monSchema;   //Person的文本属性
    var monModel;    //Person的数据库模型
    var monEntity;   //Person实体
  1. Schema、Model、Entity的关系请牢记,Schema生成Model,Model创造Entity,Model和Entity都可对数据库操作造成影响,但Model比Entity更具操作性。

  2. 安装Mongooser

    npm install mongooser

  3. 创建数据库连接

//引入模块
var mongoose = require('mongoose');
//链接数据库
var db = mongoose.createConnection('mongodb://localhost:27017/test');
//打印db查看链接是否成功,连接数据库是请确保mongodb数据库已经开启
console.log(db);

我们也可以对数据库连接进行监测

db.on('error',console.error.bind(console,'链接错误'));
db.once('open',function(){
  console.log('open once');
});

注意: 成功连接数据库以后就可以对数据库进行相应的操作了

数据库操作

  1. 定义一个Schema
        var monSchema = new mongoose.Schema({
          // 定义一个属性name,类型为String
          name:{type:String,default:'张'},
          // 定义一个属性age ,类型为Number
          age:{type:Number},
          //定义一个属性sex,类型为String
          sex:{type:String} 
        });
  1. 将该Schema 发布为Model
    var monModel = db.model('user',monSchema);
    //如果该Model已经发布,则可以直接通过名字索引到,如下:
    //var PersonModel = db.model('user');
    //如果没有发布,上一段代码将会异常

添加纪录

增加记录 基于 entity 操作

    var content = {name:"小李子",age:18,sex:"男"};
    var monEntity = new monModel(content);
    monEntity.save(function(err){
      if(err){
        console.log(err);
      }else {
        console.log('插入成功');
      }
      db.close();
    });

增加记录 基于 model 操作

var content = {name:"小李子",age:18,sex:"男"};
monModel.create(content,function(error){
  if(error){
    console.log(error);
  }else {
    console.log('插入成功');
  }
  db.close();
});

更新记录

更新记录 基于 model 操作

    var conditions = {name:"小李"};
    var update = {$set:{age:21}};
    var options = {upsert:true};
    var multi = {multi:true};
    monModel.update(conditions,update,options,function(err){
      if(err){
        console.log(err);
      }else {
        console.log("update OK");
      }
      db.close();
    });

查询

基于实例方法的查询

    //添加 user 实例方法
    monSchema.methods.findbyname = function(name, callback) {
        return this.model('user').find({name: name}, callback);
    }
    var monModel = db.model('user',monSchema);
    // 基于实例方法的查询
    var monEntity = new monModel({});
    monEntity.findbyname('小李子',function(error,result){
      if (error) {
        console.log(error);
      }else {
        console.log(result);
      }
      db.close();
    });

基于静态方法的查询

    // 添加 user 静态方法,静态方法在Model层就能使用
    monSchema.statics.findbyname = function(name, callback) {
        return this.model('user').find({name: name}, callback);
    }
    var monModel = db.model('user',monSchema);
    // 基于静态方法的查询
    monModel.findbyname('小李子', function(error, result){
        if(error) {
            console.log(error);
        } else {
            console.log(result);
        }
        //关闭数据库链接
        db.close();
    });

查询操作

    // 查询操作
    var monModel = db.model('user',monSchema);
    var content = {};
    var field = {name : 1,age:1,sex:1};
    monModel.find(content,field,function(err , result){
      if(err){
        console.log(err);
      }else {
        console.log(result);
      }
      db.close();
    });

删除操作

    var content = {name:"小李子",age:18,sex:"男"};
    monModel.remove(content,function(error){
      if(error){
        console.log(error);
      }else {
        console.log('del 成功');
      }
      db.close();
    });

转载请标明出处http://blog.csdn.net/divide_

猜你喜欢

转载自blog.csdn.net/Divide_/article/details/52517861