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

本篇文章是关于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(
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
1. 安装依赖 安装`express`、`mongoose`、`body-parser`和`cors`: ``` npm install express mongoose body-parser cors --save ``` 2. 连接数据库 在`app.js`中连接数据库: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); app.listen(3000, () => console.log('服务器已启动')); ``` 3. 定义模型 在`models`文件夹下创建`user.js`文件,定义用户模型: ```javascript const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: String, age: Number, gender: String, }); const User = mongoose.model('User', userSchema); module.exports = User; ``` 4. 增加数据 在`app.js`中增加路由,实现增加用户功能: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const User = require('./models/user'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); // 增加用户 app.post('/users', (req, res) => { const user = new User({ name: req.body.name, age: req.body.age, gender: req.body.gender, }); user.save((err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user); } }); }); app.listen(3000, () => console.log('服务器已启动')); ``` 5. 查询数据 在`app.js`中增加路由,实现查询用户功能: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const User = require('./models/user'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); // 增加用户 app.post('/users', (req, res) => { const user = new User({ name: req.body.name, age: req.body.age, gender: req.body.gender, }); user.save((err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user); } }); }); // 查询用户 app.get('/users', (req, res) => { User.find((err, users) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(users); } }); }); app.listen(3000, () => console.log('服务器已启动')); ``` 6. 更新数据 在`app.js`中增加路由,实现更新用户功能: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const cors = require('cors'); const User = require('./models/user'); const app = express(); // 连接数据库 mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, '连接错误:')); db.once('open', function() { console.log('连接成功'); }); app.use(bodyParser.json()); app.use(cors()); // 增加用户 app.post('/users', (req, res) => { const user = new User({ name: req.body.name, age: req.body.age, gender: req.body.gender, }); user.save((err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user); } }); }); // 查询用户 app.get('/users', (req, res) => { User.find((err, users) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(users); } }); }); // 更新用户 app.put('/users/:id', (req, res) => { User.findByIdAndUpdate(req.params.id, { $set: { name: req.body.name, age: req.body.age, gender: req.body.gender, }, }, { new: true }, (err, user) => { if (err) { console.error(err); res.sendStatus(500); } else { res.json(user);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值