MongoDBを使用してMongoDBを処理していますが、新しいエントリをコレクションに保存しようとすると、save()メソッドが停止しているように見えて、then()
メソッドまたは約束のcatch()
メソッドは呼び出されません。Mongoose model.save()が保留になっていますか?
誰にもアイデアはありますか?
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 }
});
const User = mongoose.model('User', UserSchema);
console.log('config.database.url', config.database.url);
mongoose.Promise = global.Promise;
return mongoose.createConnection(config.database.url, {
useMongoClient: true
})
.then((connection) => {
const user = new User({
email: '[email protected]',
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);
});
環境:8.9.0をnodejs、ノードモジュール:マングース4.13.6、MongoDBの2.2.33
はいただきました!間違っている知っている方法と、コンソールエラーパラメータを保存するためのコールバックを持っています。また、 'return prom'は基本的にあなたの関数を終了しているので、明白な残りのコードは実行されません。 – wrangler
*保留中のものに何も間違いはありません。結局のところ非同期コードなので、保存が完了する前にconsole.logが呼び出されます。 'createConnection'を' connect'で変更して保存することができます。 – MikaS