/ / Wo kann ich den Dateinamen und die Zeilennummer einer Knotenwarnung erhalten? - javascript, node.js, express

Wo kann ich den Dateinamen und die Zeilennummer einer Knotenwarnung bekommen? - javascript, node.js, express

Ich bekomme diese kryptischen Zeilen hier:

DEBUG: Mongoose verbunden (Knoten:5983) UnhandledPromiseRejectionWarning: Nicht behandelte Ablehnung von Versprechen (Ablehnungs-ID: 1): TypeError: Die Eigenschaft "then" von undefined kann nicht gelesen werden (node: 5983) [DEP0018] DeprecationWarning: Nicht behandelte Versprechensverweigerungen sind veraltet. Versprechen Sie in Zukunft Ablehnungen, die nicht behandelt werden beendet den Node.js-Prozess mit einem Exit-Code ungleich Null.

Wie kann ich nützliche Debugging-Informationen erhalten, so dass ich nicht raten muss, wo genau das Problem liegt?

Ich glaube, es ist irgendwo in dieser Datei:

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")
});
}

Antworten:

0 für die Antwort № 1

In diesem Fall geben Sie einen Rückruf an Ihre Speicherfunktion zurück, damit Mungo keine Zusage zurückgibt:

  Instance.save((err, results)=>{
if (err) {
return console.error(err);
}
console.log("Saved Successfully")
})

Wenn Sie weiterhin Promise verwenden möchten, müssen Sie keine Rückruffunktion übergeben:

  Instance.save().then(() => {
console.log("Saved Successfully")
}).catch(err => {
return console.error(err);
});

0 für die Antwort № 2

Im Allgemeinen bedeutet eine unbehandelte Promise-Zurückweisung, dass Ihnen eine Fangmethode fehlt, um den Fehler zu beheben .then() nach der Rückgabe eines Versprechens behandelt nur der Code, wenn es erfolgreich ausgeführt wird, während einschließlich a .catch Block wird übersprungen .then und nur laufen .catchmit dem Fehler als Rückruf, wenn ein Fehler auftritt, während der Code ausgeführt wird, der das Versprechen zurückgibt.

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);
}