Önsöz: Neden benim JS vaat yakalama hata nesneler boş?
req.helpers.consoleMessage
fonksiyonu ve göstermek için tespit içinde basit mantığı ile bir fonksiyonudur Bluebird kullanılması ve Gelincik içinde mpromise değiştirilmesi Mongoose- Uygulama yapılandırmasında hata ayıklamasının varlığını ve görüntülenmekte olan nesnelerin boş olmayan/tanımsız durumunu temel alarak belirli bir ayrıntı düzeyi. Tüm iletiler
JSON
kullanılarak dizilir ve konsolda görüntülenecek şekilde döndürülür.
Kodu: Burada
Bu belirtileri gösteren bazı kod bir örnektir.
Bu, üzerinde çalıştığım bir API'deki :team
:comment
birimler için bir delete
yoludur. var response = user.comments;
hattını user
nesnesine işaret eden bir hatayla, aslında team
numaralı çağrıya döndüğümde, çağrı işlevi tarafından döndürülen ve Promise .then()
'a iletilmesi gereken bir hatayla ayrıldım. Bu, kullanıcı tanımlanmadığı için bir referans hatasına neden olmalıdır.
var console = clim("(DELETE /api/v1/team/:team/comments/:comment):", logger);
// create a filters request for mongoose
var query = {};
// determine if the :team param is a username or an object id
req.helpers.validateObjectId(req.db, req.params.team) ? query._id = req.params.team : query.name = req.params.team;
if(req.helpers.validateObjectId(req.db, req.params.comment)) {
// looks good; create an update object
var update = { $pull: { comments: { _id: req.params.comment } } };
// find the comment using the query above and pull the comment id
req.models.Team.findOneAndUpdate(
query,
update,
{safe: true, new : true}
).then(function(team){
if(!team){
// create the response object
var response = {
success: false,
message: "Team not found"
};
// log request
console.info(req.helpers.consoleMessage(req, response, null));
// respond with an appropriate array
res.status(404).json(response);
}else{
// create the response object using the teams's comments
var response = user.comments;
// log request
console.info(req.helpers.consoleMessage(req, response, null));
// respond with the team comments array
res.status(200).json(response);
}
}).then(null, function(err){
// create the response
var response = { success: false, message: req.config.debug ? err: "An error has occur with your request; please try again" };
// log the errors
console.error(req.helpers.consoleMessage(req, response, err));
// or send a 500 internal server error
res.status(500).json(response);
});
}else{
// create the response
var response = { success: false, message: "Comment id is not a valid object id" };
// log the errors
console.info(req.helpers.consoleMessage(req, response, null));
// or send a 500 internal server error
res.status(500).json(response);
}
Belirti:
bir hata üretmek ve .catch()
Hatalı durumdan kurtarmak için bir girişim ateşlenmesine neden olur bu yolu çağrılması ancak err
nesne boş görünüyor.
Ex. HTTP Yanıtı: { success: false, message: {} }
Ör. (Netlik için kısaltılmış) Konsolu günlük { req: {...}, res: {...}. err: {} }
Sonuç:err
nesne boş görünüyor
...
Cool! Paylaştığın için teşekkürler. – danilodeveloper
Hah, aynı hatayı yaptım. Bu benim için bugün yığın yığınındaki en yararlı şey. Teşekkürler. – jlegler