微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – Mongoose迁移

任何人都有一个迁移模块,用于使用mongoose插件迁移 mongodb数据?

我目前正在使用“迁移”模块,除了我需要在每个向上/向下创建/销毁我的连接这一事实之外,它工作得很好.

I.E.

// Setup mongoose
var mongoose = require('mongoose'),Role = require('../models/role'),User = require('../models/user');

exports.up = function(next) {
  // get a brand new connection for this patch.
  mongoose.connect('mongodb://localhost/sagedb');

  var adminUser = {
    username: 'admin',password: 'admin'
  };

  User.createuser(adminUser,function(err,user) {
    if (err)  {
       mongoose.disconnect();  // Make sure to close connection
       return next(err);
    }

    mongoose.disconnect(next); // Make sure to close connection
  });
};

exports.down = function(next) {
  mongoose.connect('mongodb://localhost/sagedb'); // new connection for down

  User.getUserByUsername('admin',user) {
    if (err) {
      mongoose.disconnect(function() { // make sure to close connection
        return next(err);
      });
    }

    if (!user) {
      mongoose.disconnect(); // make sure to close connection
      return next();
    }

    User.deleteUser(user,user) {
      console.log('deleted user');
      mongoose.disconnect(next); // make sure to close connection
    });
  });
};

可能是一个更好的方法来做到这一点.想知道唯一的选择是创建我自己的模块,启动连接一次,并在所有补丁完成后关闭它.

我见过mongoose-migrate跟踪数据库集合中的迁移.不是特定于猫鼬恕我直言,我宁愿仍然使用.migrate文件,但只需要打开一次连接.

解决方法

问题的原因是每次迁移时都有“连接”连接
这就是你必须断开连接的原因.
如果用mongoose.createConnection替换connect,则情况相同.你需要关闭它.

怎么解决

移动

var mongoose = require('mongoose'),User = require('../models/user');

进入像db这样的模块

var mongoose = require('mongoose'),User = require('../models/user');
module.exports = mongoose

并且只需要它

var mongoose = require('./db')

所以你将拥有:

>单连接>所有型号都装在一个地方>清理代码迁移

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐