文章目录
  1. 1. 修改
  2. 2. 查找
  • 清空数据代码
  • 原来的加载数据代码(使用mongoose-fixtures)
  • 更新代码为
  • 数据代码示例
  • 修改

    查找

    清空数据代码

    1
    2
    3
    4
    5
    6
    // 连接数据库
    var db = mongoose.connect(config.db, function (err) {
    // 清空数据库
    db.connection.db.dropDatabase(function (err, result) {
    }
    }

    原来的加载数据代码(使用mongoose-fixtures)

    1
    fixtures.load(reuire('../data.js'));

    加载代码时,没有考虑到数据延迟问题,假如后来加载的数据的校验需要用到之前的数据,则会因为之前数据不存在而出现问题.

    更新代码为

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    /**使用promise保证只有当前的数据保存成功时,才会继续下一个(因为保存卡片和文档时,需要频道数据)*/
    var promise = Promise.resolve();
    function saveModel(model){
    promise = promise.then(function(){
    return new Promise(function(resolve,reject){
    model.save(function(err,data){
    if(err){
    console.log(err);
    reject(err);
    }else{
    resolve();
    }
    });
    });
    });
    }
    gulp.task('db', ['load-all-models'], function (cb) {
    // 连接测试数据库
    var db = mongoose.connect(config.db, function (err) {
    console.log('连接测试数据库',err);
    // 清空测试数据库
    db.connection.db.dropDatabase(function (err, result) {
    if (err) {
    throw err;
    }
    console.log('清空测试数据库');
    console.log('加载测试数据');
    for(var model in datas){
    console.log('加载'+ model);
    var Model = mongoose.model(model);
    for(var data in datas[model]){
    try{
    var d = new Model(datas[model][data]);
    saveModel(d);
    }
    catch(e){
    console.log(e);
    }
    }
    }
    });
    });
    });

    数据代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    var ObjectId = require('mongodb').ObjectID;
    var md5 = require('md5');
    var password = md5('123123');
    var adminId = new ObjectId();
    function time(){
    return (new Date()).getTime();
    }
    exports.User = {
    admin: {
    _id: adminId,
    email: 'admin@baidu.com',
    password: password,
    nickname: 'admin',
    group: 'admin'
    },
    marry: {
    _id: new ObjectId(),
    email: 'marry@123.com',
    password: password,
    nickname: 'marry'
    },
    james: {
    _id: new ObjectId(),
    email: 'james@123.com',
    password: password,
    nickname: 'james'
    }
    };
    文章目录
    1. 1. 修改
    2. 2. 查找
  • 清空数据代码
  • 原来的加载数据代码(使用mongoose-fixtures)
  • 更新代码为
  • 数据代码示例