nodejs+mongoose简单关联+增删改查

本文介绍如何利用mongoose在Node.js中进行数据库操作,包括模型定义、对象ID关联以及增删改查的基本步骤。涉及user、schoolClass及多对多中间表user_schoolClass的交互,并提供了相关逻辑处理的示例。
摘要由CSDN通过智能技术生成

本篇文章是关于mongoose的简单操作,包括使用objectId来关联和一些增删查改的方法。希望能指出不正确的地方,因为我也是初学者。也希望能对其他初学者有帮助!谢谢!微笑微笑


node.js目录结构:

routes:路由分发

controller:mvc中C层,做逻辑处理

models:mvc中m层,数据表模型

DBsql:模型sql操作

DBhelper:公共sql方法


数据表结构

user:学生表

schoolClass:班级表

user_schoolClass:多对多中间表



逻辑过程:

(1)新建对应表模型及关联

(2)设计增删改查语句

(3)逻辑层使用模型去执行增删查改方法


(1)新建对应表模型及关联

user模型

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;

//schema 就是如何定义数据的结构
var userSchema = new mongoose.Schema({
    userName:{type:String}
});
//生成方法getModel给予调用,返回user模型
module.exports = {
    getModel: function(){
        return _getModel();
    }
};

//通过db将表user和Schema结构连接在一起,没有表的话会自动产生。
var _getModel = function(type,err){
    var userModel = global.db.model('user',userSchema);
    return userModel;

};
schoolClass模型

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;


var schoolClassSchema = new mongoose.Schema({
    schoolClassName:{type:String}

});
module.exports = {
    getModel: function(){
        return _getModel();
    }
};

var _getModel = function(){
    var schoolClassModel = global.db.model('schoolClass',schoolClassSchema);
    return schoolClassModel;

};
user_schoolClass模型

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;

var user_schoolClassSchema = new mongoose.Schema({
    userId:{type: Schema.Types.ObjectId, ref: 'user' },//定义类型为objectid ,ref是关联的模型名称
    schoolClassId:{type: Schema.Types.ObjectId, ref: 'schoolClass' }<span style="font-family: Arial, Helvetica, sans-serif;">//定义类型为objectid ,ref是关联的模型名称</span>

});
module.exports = {
    getModel: function(){
        return _getModel();
    }
};

var _getModel = function(type,err){
    var user_schoolClassModel = global.db.model('user_schoolClass',user_schoolClassSchema);
    return user_schoolClassModel;

};
(2)设计增删改查语句

dbHelper.js

/**
 * 公共Add方法
 * @param model 要操作数据库的模型
 * @param conditions 增加的条件,如{id:xxx}
 * @param callback 回调方法
 */
exports.addData =function(model,conditions,callback) {

    model.create(conditions, function(err,result){
        if(err) {
            console.log(err);
            callback({success:0,flag:"save data fail"});
        } else {

            console.log('save success');
            callback({success:1,flag:"save data success"});
        }
    });

}

/**
 * 公共update方法
 * @param model 要操作数据库的模型
 * @param conditions 增加的条件,如{id:xxx}
 * @param update 更新条件{set{id:xxx}}
 * @param options 
 * @param callback
 */
exports.updateData =function(model,conditions,update,options,callback) {

    model.update(conditions, update, options, function(error,result){
        if(error) {
            console.log(error);
            callback({success:0,flag:"update data fail"});
        } else {
            if(result.n!=0){
                console.log('update success!');
                callback({success:1,flag:"update data success"});
            }
            else{
                console.log('update fail:no this data!');
                callback({success:0, flag: 'update fail:no this data!'});
            }

        }
    });
}

/**
 * 公共remove方法
 * @param model
 * @param conditions
 * @param callback
 */
exports.removeData =function(model,conditions,callback) {

    model.remove(conditions, function(error,result) {
        if (error) {
            console.log(error);
            callback({success: 0, flag: "remove data fail"});
        } else {
            if(result.result.n!=0){
                console.log('remove success!');
                callback(
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值