ここにこれらの不可解な行があります:
デバッグ:Mongoose接続(ノード:5983) UnhandledPromiseRejectionWarning:未処理のプロミス拒否 (拒否ID:1):TypeError:未定義のプロパティ「then」を読み取ることができません (ノード:5983)[DEP0018] DeprecationWarning:未処理のプロミス拒否 非推奨です。将来、処理されない拒否を約束する Node.jsプロセスをゼロ以外の終了コードで終了します。
正確な問題がどこにあるかを推測する必要がないように、有用なデバッグ情報を取得するにはどうすればよいですか?
私はそれがこのファイルのどこかにあると信じています:
const mongoose = require("mongoose");
const helper = require("../config/helper");
const schema = require("./Schemas")
mongoose.connect(helper.getMongoose()).then(
() => {
console.log("DEBUG: Mongoose connected")
mongooseConnected();
},
(err) => {
console.log("DEBUG: Mongoose did not connect")
}
);
function mongooseConnected () {
makeSchema( schema.User,
{ id_google: "1",
type: "person",
timestamp: Date.now()
});
}
function makeSchema (Schema, dataObj) {
const Class = mongoose.model("Class", Schema);
const Instance = new Class(dataObj);
Instance.save((err, results)=>{
if (err) {
return console.error(err);
}
}).then(() => {
console.log("Saved Successfully")
});
}
回答:
回答№1は0あなたの場合、保存関数にコールバックを提供しているので、このようにmongooseはPromiseを返しません:
Instance.save((err, results)=>{
if (err) {
return console.error(err);
}
console.log("Saved Successfully")
})
それでもPromiseを使用したい場合は、コールバック関数を渡す必要はありません。
Instance.save().then(() => {
console.log("Saved Successfully")
}).catch(err => {
return console.error(err);
});
回答№2の場合は0
一般に、未処理のPromise拒否とは、エラーに対処するためのcatchメソッドが欠落していることを意味します。 .then()
promiseを返した後は、コードが正常に実行された場合にのみコードを処理しますが、 .catch
ブロックはスキップします .then
のみ実行 .catch
、promiseを返すコードの実行中にエラーが発生した場合のコールバックとしてのエラー。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
myModel.save()
.then(() => {
console.log("Saved");
})
.catch(err => {
console.log(err);
}