/ / Dove posso trovare il nome del file e il numero di riga di un avviso nodo? - javascript, node.js, express

Dove posso ottenere il nome del file e il numero di riga di un avviso di nodo? - javascript, node.js, express

Ottengo queste linee criptiche qui:

DEBUG: Mongoose connesso (nodo:5983) UnhandledPromiseRejectionWarning: rifiuto della promessa non gestita (ID rifiuto: 1): TypeError: impossibile leggere la proprietà "then" di undefined (nodo: 5983) [DEP0018] DeprecationWarning: rifiuti di promessa non gestiti sono deprecati. In futuro, prometti rifiuti che non saranno gestiti terminerà il processo Node.js con un codice di uscita diverso da zero.

Come posso ottenere utili informazioni di debug in modo da non dover indovinare dove si trova il problema esatto?

Credo che sia da qualche parte in questo file:

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

risposte:

0 per risposta № 1

Nel tuo caso stai fornendo un callback alla tua funzione di salvataggio, in questo modo mangusta non restituirà una promessa:

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

Se vuoi comunque usare Promise, non devi passare una funzione di callback:

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

0 per risposta № 2

In generale, un rifiuto Promise non gestito significa che ti manca un metodo catch per gestire l'errore. Semplicemente incluso .then() dopo aver restituito una promessa, il codice viene gestito solo se eseguito correttamente, mentre includendo a .catch il blocco salterà .then e corri solo .catch, con l'errore come richiamata quando si verifica un errore durante l'esecuzione del codice che restituisce la promessa.

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