实例

  • 连接数据库信息放到独立文件里
  • 模型定义放到独立文件
  • 在具体调用的文件里,使用模型定义

连接数据库

看一下实际代码,db/mini/connect.js

  1. var mongoose = require("mongoose");
  2. var db = mongoose.connect("mongodb://127.0.0.1:27017/db_helloworld");
  3. db.connection.on("error", function (error) {
  4. console.log("数据库连接失败:" + error);
  5. });
  6. db.connection.on("open", function () {
  7. console.log("数据库连接成功");
  8. });

一般项目里,所有模型都共用一个数据库连接信息,所以把连接数据库的代码抽取到connect.js里,然后在对应的模型里会app入口引用即可。

模型定义

看一下实际模型定义代码,db/mini/user.js

  1. var mongoose = require('mongoose');
  2. // 定义Schema
  3. UserSchema = new mongoose.Schema({
  4. username: {// 真实姓名
  5. type: String,
  6. required: true
  7. },
  8. password: { // 密码
  9. type: String,
  10. required: true
  11. }
  12. });
  13. // 定义Model
  14. var UserModel = mongoose.model('User', UserSchema);
  15. // 暴露接口
  16. module.exports = UserModel;

这是MVC里Model层最长见的代码,没有连接信息,也没有其他额外不相干代码,当你看到user.js你就能理解它在数据库里对应的表结构,以及字段的类型、约束等信息,一般来说,代码写的越干净,可读性会更好一些。

这里定义的User模型里只有 用户名密码 2个字段,它们都必须有值的,也就是说当你创建用户的时候,没有密码或者没有用户名你是无法创建成功的。

测试代码

看一下实际代码db/mini/user.js

  1. // 1、引入`mongoose connect`
  2. require('./connect');
  3. // 2、引入`User` Model
  4. var User = require('./user');
  5. // 3、定义`user` Entity
  6. var user = new User({
  7. username: 'i5ting',
  8. password: '0123456789'
  9. });
  10. // 4、对数据库进行操作
  11. user.save(function(err, doc){
  12. if (err) {
  13. console.log('save error:' + err);
  14. }
  15. console.log('save sucess \n' + doc);
  16. })

核心步骤

  • 引入数据库连接,保证mongodb已经连接成功
  • 引入模型(model)定义文件,即文档(表)结构定义
  • 实例化UserModel,创建user实体
  • 最后通过user实体对数据库进行操作,完成用户注册功能。

这是项目里数据访问层的代码,它真实的对数据库进行操作,所以它一般会出现在controllerservice层。

执行测试

  1. $ node db/mini/test.js
  2. 数据库连接成功
  3. save sucess
  4. { _id: 57341fc54d97ee0249082a1d,
  5. password: '0123456789',
  6. username: 'i5ting',
  7. __v: 0 }