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')

所以你将拥有:

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

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...