How do I generate a new Error() with Mongoose that maintains the same nested structure as the standard...
Question
How do I generate an error that is more easily iterable on the front-end from Mongoose, that maintains the standard Validation error structure using new Error()
?
Issue
I have a handful of validations that run on my Mongoose schema. I have a pre-save function that I'm using to encrypt a password using bcrypt
. I'm trying to make sure I catch all promises, and I've got a situation where I may receive an error from bcrypt if a user's password is not successfully hashed. I'd like to generate a generic error that I can have display on the front-end. Right now I iterate through validation errors in the error.errors
object which is returned from Mongoose in the following format:
// Schema
const MySchema = new Schema(
{
myField: {
type: String,
minlength: [3, "My Field must be 3-30 characters."],
maxlength: [30, "My Field must be 3-30 characters."],
required: [true, "My Field is required."],
trim: true
},
)
// Errors returned in the following format:
errors: {
myField: {
message: "Custom error warns foo must be bar."
},
// ... more error'd fields here
}
I'd like to add a custom error in the same format, so that the single error.errors
object I'm sending back to my front-end in JSON format is easily iterable. Right now, I take my bcrypt
error, and format my own object in this similar format, but it's not a very elegant way to do things.
I may be confused on how to properly use New Error("My custom error here")
and may be making my validation harder than it needs to be, and would love any insight.
Code
You can see on Line 88 in my User-model.js that I'm catching a bcrypt error and formatting an object that resembles the same hierarchy as the standard validation errors object (afore noted).
I then send the
error.errors
object via JSON from the backend Line 19 in user-controller.js to the front-end for iteration.
Is there a cleaner way to utilize New Error()
and make my error handling a bit nicer, without having to format my own error objects in this way?
node.js mongodb validation mongoose error-handling
add a comment |
Question
How do I generate an error that is more easily iterable on the front-end from Mongoose, that maintains the standard Validation error structure using new Error()
?
Issue
I have a handful of validations that run on my Mongoose schema. I have a pre-save function that I'm using to encrypt a password using bcrypt
. I'm trying to make sure I catch all promises, and I've got a situation where I may receive an error from bcrypt if a user's password is not successfully hashed. I'd like to generate a generic error that I can have display on the front-end. Right now I iterate through validation errors in the error.errors
object which is returned from Mongoose in the following format:
// Schema
const MySchema = new Schema(
{
myField: {
type: String,
minlength: [3, "My Field must be 3-30 characters."],
maxlength: [30, "My Field must be 3-30 characters."],
required: [true, "My Field is required."],
trim: true
},
)
// Errors returned in the following format:
errors: {
myField: {
message: "Custom error warns foo must be bar."
},
// ... more error'd fields here
}
I'd like to add a custom error in the same format, so that the single error.errors
object I'm sending back to my front-end in JSON format is easily iterable. Right now, I take my bcrypt
error, and format my own object in this similar format, but it's not a very elegant way to do things.
I may be confused on how to properly use New Error("My custom error here")
and may be making my validation harder than it needs to be, and would love any insight.
Code
You can see on Line 88 in my User-model.js that I'm catching a bcrypt error and formatting an object that resembles the same hierarchy as the standard validation errors object (afore noted).
I then send the
error.errors
object via JSON from the backend Line 19 in user-controller.js to the front-end for iteration.
Is there a cleaner way to utilize New Error()
and make my error handling a bit nicer, without having to format my own error objects in this way?
node.js mongodb validation mongoose error-handling
add a comment |
Question
How do I generate an error that is more easily iterable on the front-end from Mongoose, that maintains the standard Validation error structure using new Error()
?
Issue
I have a handful of validations that run on my Mongoose schema. I have a pre-save function that I'm using to encrypt a password using bcrypt
. I'm trying to make sure I catch all promises, and I've got a situation where I may receive an error from bcrypt if a user's password is not successfully hashed. I'd like to generate a generic error that I can have display on the front-end. Right now I iterate through validation errors in the error.errors
object which is returned from Mongoose in the following format:
// Schema
const MySchema = new Schema(
{
myField: {
type: String,
minlength: [3, "My Field must be 3-30 characters."],
maxlength: [30, "My Field must be 3-30 characters."],
required: [true, "My Field is required."],
trim: true
},
)
// Errors returned in the following format:
errors: {
myField: {
message: "Custom error warns foo must be bar."
},
// ... more error'd fields here
}
I'd like to add a custom error in the same format, so that the single error.errors
object I'm sending back to my front-end in JSON format is easily iterable. Right now, I take my bcrypt
error, and format my own object in this similar format, but it's not a very elegant way to do things.
I may be confused on how to properly use New Error("My custom error here")
and may be making my validation harder than it needs to be, and would love any insight.
Code
You can see on Line 88 in my User-model.js that I'm catching a bcrypt error and formatting an object that resembles the same hierarchy as the standard validation errors object (afore noted).
I then send the
error.errors
object via JSON from the backend Line 19 in user-controller.js to the front-end for iteration.
Is there a cleaner way to utilize New Error()
and make my error handling a bit nicer, without having to format my own error objects in this way?
node.js mongodb validation mongoose error-handling
Question
How do I generate an error that is more easily iterable on the front-end from Mongoose, that maintains the standard Validation error structure using new Error()
?
Issue
I have a handful of validations that run on my Mongoose schema. I have a pre-save function that I'm using to encrypt a password using bcrypt
. I'm trying to make sure I catch all promises, and I've got a situation where I may receive an error from bcrypt if a user's password is not successfully hashed. I'd like to generate a generic error that I can have display on the front-end. Right now I iterate through validation errors in the error.errors
object which is returned from Mongoose in the following format:
// Schema
const MySchema = new Schema(
{
myField: {
type: String,
minlength: [3, "My Field must be 3-30 characters."],
maxlength: [30, "My Field must be 3-30 characters."],
required: [true, "My Field is required."],
trim: true
},
)
// Errors returned in the following format:
errors: {
myField: {
message: "Custom error warns foo must be bar."
},
// ... more error'd fields here
}
I'd like to add a custom error in the same format, so that the single error.errors
object I'm sending back to my front-end in JSON format is easily iterable. Right now, I take my bcrypt
error, and format my own object in this similar format, but it's not a very elegant way to do things.
I may be confused on how to properly use New Error("My custom error here")
and may be making my validation harder than it needs to be, and would love any insight.
Code
You can see on Line 88 in my User-model.js that I'm catching a bcrypt error and formatting an object that resembles the same hierarchy as the standard validation errors object (afore noted).
I then send the
error.errors
object via JSON from the backend Line 19 in user-controller.js to the front-end for iteration.
Is there a cleaner way to utilize New Error()
and make my error handling a bit nicer, without having to format my own error objects in this way?
node.js mongodb validation mongoose error-handling
node.js mongodb validation mongoose error-handling
edited Jan 20 at 11:13
twknab
asked Jan 20 at 0:17
twknabtwknab
693918
693918
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54272516%2fhow-do-i-generate-a-new-error-with-mongoose-that-maintains-the-same-nested-str%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54272516%2fhow-do-i-generate-a-new-error-with-mongoose-that-maintains-the-same-nested-str%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown