使用填充猫鼬时捕获错误

路易斯·阿尔维斯

我有猫鼬的下一个模型和路线:

在我的集合中,我有一些无效的 ID 到“cidade”字段,这就是为什么我收到下面显示的错误。

错误发生在这一行:

.populate('cidade')

有没有办法在以下位置执行我的路由器(代码如下):

router.get('/:id',function(req,res,next){  .....

没有停止那个错误?如果发现无效的“id”,我只想忽略它并继续下一步。

我的收藏太大,可能有一些无效的“id”到“cidade”字段。

//错误

angular.js:14328 Possibly unhandled rejection: {"data":{"message":"Cast to ObjectId failed for value \"Ararendá\" at path \"_id\" for model \"Cidade\"","name":"CastError","stringValue":"\"Ararendá\"","kind":"ObjectId","value":"Ararendá","path":"_id"},"status":500,"config":

//模型和路由

//城市

cidadesSchema = new mongoose.Schema({
  uf: {type: String, unique:true},
  cidade: {type: String, unique:true}
});

module.exports = mongoose.model('Cidade', cidadesSchema,'cidades' );

//专业的

var profissionaisSchema = new mongoose.Schema({
  nome: {type: String, unique:true},
  cidade: {type:mongoose.Schema.Types.ObjectId, ref:'Cidade'},
  estado: {type:mongoose.Schema.Types.ObjectId, ref:'Estado'},
  cep: {type: String},
});

module.exports = mongoose.model('Profissional', profissionaisSchema,'profissionais' );

//路线

const callback=function(err,data,res){
     if (err) return res.status(500).json(err);
     return res.status(200).send(data);
}   
router.get('/:id',function(req,res,next){   
    const query=req.params.id;
    Profissional.findById(query).populate('profissao')
    .populate('cidade')
    .exec( (err,data) => {
       callback(err,data,res)
    });
});
罗伯特克莱普

我不认为你可以告诉 Mongoose 忽略这些错误继续前进,所以你将不得不自己实现人口(这应该相对容易,因为你使用的findById最多只会产生一个文档)。

这是一些(未经测试的)代码:

Profissional.findById(query).populate('profissao').exec( (err, profi) => {
  if (err) {
    return res.status(500).json(err);
  } else if (! profi || ! /^[a-f0-9]{24}$/i.test(profi.cidade)) {
    return res.status(200).send(profi);
  }
  Cidade.findById(profi.cidade).exec((err, cidade) => {
    if (err) {
      return res.status(500).json(err);
    }
    profi.cidade = cidade;
    return res.status(200).send(profi);
  });
});

如果该cidade属性看起来像一个有效的 ObjectId,它将运行一个查询来检索它,否则它不会打扰。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

填充时的猫鼬转换错误

来自分类Dev

猫鼬填充转换错误

来自分类Dev

使用猫鼬填充时返回空的帖子数组

来自分类Dev

猫鼬填充方法的转换错误

来自分类Dev

使用猫鼬按ID搜索对象时出现错误

来自分类Dev

从猫鼬获取数据时Node.js异步尝试/捕获错误

来自分类Dev

猫鼬,如何使用填充加入集合?

来自分类Dev

如何填充猫鼬?

来自分类Dev

猫鼬填充缓存

来自分类Dev

猫鼬填充与聚合

来自分类Dev

猫鼬试图填充

来自分类Dev

猫鼬填充-数组

来自分类Dev

我可以在填充猫鼬之前使用填充吗?

来自分类Dev

使用猫鼬根据条件mongodb填充或不填充

来自分类Dev

如何捕获猫鼬中的错误代码

来自分类Dev

从猫鼬承诺的回调函数引发的错误未捕获

来自分类Dev

使用猫鼬的打字稿错误

来自分类Dev

尝试使用猫鼬和异步保存到数据库时出现多个错误

来自分类Dev

测试时出现“不建议使用mpromise(猫鼬的默认promise库)”错误

来自分类Dev

在连接字符串中使用数据库名称时出现猫鼬连接错误

来自分类Dev

使用res.json()时,我在猫鼬中收到内部错误500而不是404

来自分类Dev

使用猫鼬时出现错误“对象没有方法xxx”

来自分类Dev

如何在猫鼬中填充后使用.where()

来自分类Dev

猫鼬解析错误

来自分类Dev

猫鼬保存错误

来自分类Dev

猫鼬分组错误

来自分类Dev

提供所需值但猫鼬无法识别时如何修复猫鼬验证器错误

来自分类Dev

猫鼬的填充方法的MissingSchemaError

来自分类Dev

猫鼬兑现诺言并填充