我使用mongoose来处理我的模式,使用MongoDB,但是当尝试将新条目保存到集合时,save()方法似乎被卡住,then()
方法或{{1}承诺的方法似乎被调用。
有没有人有任何想法?
catch()
环境:nodejs 8.9.0,节点模块:Mongoose 4.13.6,mongodb 2.2.33
答案 0 :(得分:4)
稍微进行一些实验,看起来我需要确保模型与连接相关联,这样:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// const Promise = require('bluebird');
const config = require('./config');
const UserSchema = new Schema({
email: { type: String, required: true, index: { unique: true } },
name: { type: String, required: false },
password: { type: String, required: true }
});
let User;
console.log('config.database.url', config.database.url);
mongoose.Promise = global.Promise;
return mongoose.createConnection(config.database.url, {
useMongoClient: true
})
.then((connection) => {
// associate model with connection
User = connection.model('User', UserSchema);
const user = new User({
email: 'someuser@somedomain.com',
password: 'xxxxx'
});
const prom = user.save();
// Displays: 'promise: Promise { <pending> }'
console.log('promise:', prom);
return prom
.then((result) => {
// Don't see this output
console.log('result:', result);
})
.catch((error) => {
// Don't see this output either
console.log('error:', error);
});
})
.catch((error) => {
console.log(error);
});
或者,我们应该使用connect()
方法,该方法将与通过mongoose.model
关联的模型一起使用。
createConnection()
可用于创建多个连接,因此使用全局&#39;从我所知道的,不支持模型。
如果save()
没有简单地阻止,说这一切就好了。
注意:在研究我的答案的改进时,我遇到了以下内容:Queries hang when using mongoose.createConnection() vs mongoose.connect()