使用mongoose.createConnection()和mongoose.connect()

作品:


var mongoose = require('mongoose');


var db = function() {

  return {

    config: function(conf) {

      mongoose.connect('mongodb://' + conf.host + '/' + conf.database);

      var db = mongoose.connection;

      db.on('error', console.error.bind(console, 'connection error:'));

      db.once('open', function callback() {

        console.log('db connection open');

      });

    }

  };

};


module.exports = db();

不起作用:


var mongoose = require('mongoose');


var db = function() {

  return {

    config: function(conf) {

      var db = mongoose.createConnection('mongodb://' + conf.host + '/' + conf.database);

      db.on('error', console.error.bind(console, 'connection error:'));

      db.once('open', function callback() {

        console.log('db connection open');

      });

    }

  };

};


module.exports = db();

插入代码:


'use strict';



var mongoose = require('mongoose'),

User = mongoose.model('User'),

p = require('../lib/promise');


...

app.post('/user', function (req, res) {

  res.format({

    json: function () {

      //extract the user from the req

      try {

        var user = new User();

        user.firstName = req.body.firstName;

        user.lastName = req.body.lastName;

        user.userName = req.body.userName;

        user.password = req.body.password;

        user.email = req.body.email;


        user.save(function(err, data) {

        //omitted

...


隔江千里
浏览 897回答 2
2回答

Helenr

不幸的是,这不是一个简单的重构。1).createConnectionvs.connect使用时.createConnection,可以通过使用此调用创建的显式连接访问模型。这意味着User = mongoose.model(...)不需要您User = db.model(...)。例子(一,二,三,四)表明这并不复杂,但是变化却很微妙,以至于许多人错过了。文档也不是很清楚,这可能是根本原因。2)您的kraken应用& .createConnection如果您基于其中一个常见示例,则需要进行一些更改。更改代码,.createConnection以便您可以访问返回的对象。在当前形式中,您将返回带有config函数的对象,但不返回.createConnection生成的连接对象。index.js如果您更改了在中配置/创建连接的方式,请进行更新db.config。您也许可以避免这种情况,但是我怀疑您将db.js围绕新呼叫重写整个过程。确保使用模型的代码/控制器可以访问您.createConnection返回的对象。这意味着既可以访问对象,也可以在设置了变量的任何地方进行更改,以使其使用格式var xyz = db.model('XYZ')等。抱歉,没有简单的单行答案..
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript