为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2019-12-27 10:10:24
作品: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...
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

不幸的是,这不是一个简单的重构。

1).createConnectionvs.connect

使用时.createConnection,可以通过使用此调用创建的显式连接访问模型。

这意味着User = mongoose.model(...)不需要您User = db.model(...)

例子(一,二,三,四)表明这并不复杂,但是变化却很微妙,以至于许多人错过了。文档也不是很清楚,这可能是根本原因。

2)您的kraken应用& .createConnection

如果您基于其中一个常见示例,则需要进行一些更改。

  1. 更改代码,.createConnection以便您可以访问返回的对象。在当前形式中,您将返回带有config函数的对象,但不返回.createConnection生成的连接对象。

  2. index.js如果您更改了在中配置/创建连接的方式,请进行更新db.config。您也许可以避免这种情况,但是我怀疑您将db.js围绕新呼叫重写整个过程。

  3. 确保使用模型的代码/控制器可以访问您.createConnection返回的对象。这意味着既可以访问对象,也可以在设置了变量的任何地方进行更改,以使其使用格式var xyz = db.model('XYZ')等。

抱歉,没有简单的单行答案..


查看完整回答
反对 回复 2019-12-27
  • 2 回答
  • 0 关注
  • 894 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信