【发布时间】:2016-04-30 08:29:47
【问题描述】:
我尝试使用 bluebird 来 Promisify Mongoose connect,我需要减少回调,所以我使用了 bluebird。但是它给了我下面的错误。
var expect = require('chai').expect;
var mongoose = require('mongoose');
var jobModel = require('../models/job');
var Promise = require('bluebird');
function resetJobs() {
return new Promise(function(resolve, reject) {
mongoose.connection.collections['jobs'].drop(resolve, reject);
});
};
function findJobs(query) {
return Promise.cast(mongoose.model('Job').find({}).exec());
};
var connectDB = Promise.promisify(mongoose.connect,mongoose);
describe('get jobs', function() {
it('Should not be empty since jobs are seeded', function(done) {
connectDB('mongodb://localhost/jobfinder').then(function() {
resetJobs()
.then(jobModel.seedJobs)
.then(findJobs).then(function(jobList) {
expect(jobList.length).to.be.at.least(1);
done();
});
});
});
});
但这给了我一个错误
Unhandled rejection TypeError: Cannot read property 'connection' of undefined
at Mongoose.connect (F:\MyProjects\JobFinder\node_modules\mongoose\lib\index.js:232:18)
at tryCatcher (F:\MyProjects\JobFinder\node_modules\bluebird\js\release\util.js:11:23)
at ret (eval at <anonymous> (F:\MyProjects\JobFinder\node_modules\bluebird\js\release\promisify.js:184:12), <anonymous>:14:23)
at Context.<anonymous> (F:\MyProjects\JobFinder\test\jobs-data-spec.js:22:3)
我使用的包版本如下
"bluebird": "^3.1.1",
"express": "^4.13.4",
"mongoose": "^4.3.6"
【问题讨论】:
-
它似乎适用于以下代码
var mongoose = require('mongoose'); var Promise = require('bluebird'); var connectDB = Promise.promisify(mongoose.connect, mongoose); console.log(connectDB); -
它仍然可以正常工作,
var connectDB = Promise.promisify(mongoose.connect,mongoose); console.log(connectDB);我猜你需要的mongoose模块不正确... -
@zangw 我正在使用的软件包版本也添加了。感谢您迄今为止提供的帮助
-
我认为与版本无关。你可以通过
console.log(mongoose);调试它来检查mongoose的值,因为错误显示no connect method of mongoose。
标签: node.js mongoose mocha.js bluebird chai