Node.js mongo架构未使用默认mongoose连接
考虑以下两个文件Node.js mongo架构未使用默认mongoose连接,node.js,mongodb,mongoose,mocha.js,Node.js,Mongodb,Mongoose,Mocha.js,考虑以下两个文件 // orgSchema.js var OrgSchema = new Schema({ ... }); exports.OrgDB = mongoose.model('Organization', OrgSchema); // orgs.spec.js var OrgDB = require('...').OrgDB; describe('organizations', function() { before(function(done) {
// orgSchema.js
var OrgSchema = new Schema({
...
});
exports.OrgDB = mongoose.model('Organization', OrgSchema);
// orgs.spec.js
var OrgDB = require('...').OrgDB;
describe('organizations', function() {
before(function(done) {
mongoose.Promise = Promise;
mongoose.connect('...', done);
});
after(function(done) {
mongoose.connection.close(function() {
done();
});
});
describe('simple test', function (done) {
var org = new OrgDB();
org.name = 'New Org';
org.save(function(err) {
if (err) done(err);
done();
});
});
});
注意,我有两个文件。如果我将模式与mocha单元测试放在同一个文件中,那么一切都正常。但是,目前(架构位于不同的文件中),架构模型(例如,mongoose.model
)无法识别已建立的默认连接,因此向我发出警告:
Mongoose:mpromise(Mongoose的默认承诺库)已被弃用,请插入您自己的承诺库:http://mongoosejs.com/docs/promises.html
错误是:
错误:超过2000毫秒的超时时间。对于异步测试和挂钩,确保调用“done()”;如果返回承诺,请确保其得到解决。
另外,如果我将mongoose.Promise和connect
行放在模式文件中,一切都会正常工作
如何让架构使用/识别默认连接?如果它是不同的文件,您需要做的是像使用架构一样导出连接。我会这样做:
const connection = mongoose.connect("mongourl")
mongoose.Promise = global.Promise
module.exports = connection
然后我会要求你在文件中使用连接