Метод Mongoose findById
применяет параметр id
к типу поля _id
модели, чтобы он мог правильно запросить соответствующий документ. Это объект ObjectId, но "foo"
не является допустимым ObjectId, поэтому сбой выполняется.
Это не происходит с 41224d776a326fb40f000001
, потому что эта строка является допустимым ObjectId.
One способ разрешить это - добавить проверку перед вызовом findById
, чтобы узнать, является ли id
допустимым ObjectId или нет:
if (id.match(/^[0-9a-fA-F]{24}$/)) {
// Yes, it's a valid ObjectId, proceed with `findById` call.
}
Я нашел решение своей проблемы. После нескольких дней проб, ошибок и исследований это сработало для меня:
<asp:CustomValidator ID="CustomAddressValidator" runat="server" ClientValidationFunction="CheckAddressValidation" ControlToValidate="txtAddress" CssClass="error-block" Display="Dynamic" SetFocusOnError="True">Cannot contain a PO Box number</asp:CustomValidator>
Также я изменил свой Javascript в одну функцию:
function CheckAddressValidation(sender, args) {
var address = args.Value;
var addressPattern = /(p\.?\s?o?\.?\s?b\.?(ox)\.?(\s|[0-9])?|post\soffice)/i;
if (addressPattern.test(address)) {
args.IsValid = false;
return;
}
args.IsValid = true;
}
Урок - Другая часть файла CreateProfile.ascx имеет Custom Validator в том же формате, в котором я публиковал изначально. Мои начальники считают, что Microsoft внесла некоторые изменения в это, вероятно, поэтому размещение сообщения об ошибке в теге ErrorMessage , похоже, не работает. Не стесняйтесь поправлять меня, если я где-то ошибаюсь. Но если вы застряли в подобной ситуации, моё решение должно помочь.