作品: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条经验 获得超4个赞
不幸的是,这不是一个简单的重构。
1).createConnection
vs.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')
等。
抱歉,没有简单的单行答案..
添加回答
举报
0/150
提交
取消