如何在mongodb中显示唯一约束错误?

时间:2017-10-11 08:42:51

标签: mongodb

嗨,我对nodemongodb非常陌生。

如何获取违反唯一性规则的列名。我收到错误消息

    {
      name: 'MongoError',
      message: 'E11000 duplicate key error index: myCab.users.$phone_1 dup key: { : 9145780834.0 }',
     driver: true,
     code: 11000,
     index: 0,
     errmsg: 'E11000 duplicate key error index: myCab.users.$phone_1 dup key: { : 9145780834.0 }',
    getOperation: [Function],
    toJSON: [Function],
    toString: [Function]
  }

但我需要自定义错误消息,以便可以直接在前端使用,因为有可能有两列具有唯一的constrints,所以为此我需要列名

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取字段名称:

var fieldName = err.message.substring(err.message.lastIndexOf('index: ') + 7, err.message.lastIndexOf('_1'));

您可以将其放入函数中,并在代码为1100011001时调用它。试试这个:

function getUniqueErrorMessage(err)
{
  var output;
  try
  {
    var fieldName = err.message.substring(err.message.lastIndexOf('index: ') + 7, err.message.lastIndexOf('_1'));
    output = fieldName.charAt(0).toUpperCase() + fieldName.slice(1) + ' already exists';

  }
  catch (ex)
  {
    output = 'Unique field already exists';
  }

  return output;
};

旁注: 欢迎使用mongodb。你现在可以停止调用它们了:)