Difference on Mongoose using Promise or Async/Await?
Using ExpressJs (as Web framework for Node.js) and Mongoose (for modeling MongoDB) to create a web service. I had a question about the best approach to handle the return object from some mongoose methods as (save, find, findByIdAndDelete, etc).
As the mongoose documentation says, the Model.prototype.save() will returns «Promise,undefined» Returns undefined if used with callback or a Promise otherwise.
For more: https://mongoosejs.com/docs/api.html#model_Model-save
So i want to know which one should we use or on which case one is better that the other?
As example using ES7 Async/Await:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = async (req,res) =>
await new Person( ...req.body )
.save( (err, doc)=>
err ? res.status(400).json(err) : res.send(doc);
);
As example using ES6 Promise:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = (req,res) =>
const person = new Person( ...req.body )
person.save()
.then(person =>
res.send(person);
)
.catch(err =>
res.status(400).json(err)
);
javascript node.js mongodb express mongoose
add a comment |
Using ExpressJs (as Web framework for Node.js) and Mongoose (for modeling MongoDB) to create a web service. I had a question about the best approach to handle the return object from some mongoose methods as (save, find, findByIdAndDelete, etc).
As the mongoose documentation says, the Model.prototype.save() will returns «Promise,undefined» Returns undefined if used with callback or a Promise otherwise.
For more: https://mongoosejs.com/docs/api.html#model_Model-save
So i want to know which one should we use or on which case one is better that the other?
As example using ES7 Async/Await:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = async (req,res) =>
await new Person( ...req.body )
.save( (err, doc)=>
err ? res.status(400).json(err) : res.send(doc);
);
As example using ES6 Promise:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = (req,res) =>
const person = new Person( ...req.body )
person.save()
.then(person =>
res.send(person);
)
.catch(err =>
res.status(400).json(err)
);
javascript node.js mongodb express mongoose
This is not promise vs async/await, because async/await is syntactic sugar for promises. This is Mongoose promise vs callback API. Callback API is obsolete. And it certainly shouldn't be used with async/await like in example above
– estus
Nov 14 '18 at 19:08
add a comment |
Using ExpressJs (as Web framework for Node.js) and Mongoose (for modeling MongoDB) to create a web service. I had a question about the best approach to handle the return object from some mongoose methods as (save, find, findByIdAndDelete, etc).
As the mongoose documentation says, the Model.prototype.save() will returns «Promise,undefined» Returns undefined if used with callback or a Promise otherwise.
For more: https://mongoosejs.com/docs/api.html#model_Model-save
So i want to know which one should we use or on which case one is better that the other?
As example using ES7 Async/Await:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = async (req,res) =>
await new Person( ...req.body )
.save( (err, doc)=>
err ? res.status(400).json(err) : res.send(doc);
);
As example using ES6 Promise:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = (req,res) =>
const person = new Person( ...req.body )
person.save()
.then(person =>
res.send(person);
)
.catch(err =>
res.status(400).json(err)
);
javascript node.js mongodb express mongoose
Using ExpressJs (as Web framework for Node.js) and Mongoose (for modeling MongoDB) to create a web service. I had a question about the best approach to handle the return object from some mongoose methods as (save, find, findByIdAndDelete, etc).
As the mongoose documentation says, the Model.prototype.save() will returns «Promise,undefined» Returns undefined if used with callback or a Promise otherwise.
For more: https://mongoosejs.com/docs/api.html#model_Model-save
So i want to know which one should we use or on which case one is better that the other?
As example using ES7 Async/Await:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = async (req,res) =>
await new Person( ...req.body )
.save( (err, doc)=>
err ? res.status(400).json(err) : res.send(doc);
);
As example using ES6 Promise:
const mongoose = require('mongoose');
const Person = mongoose.model('person');
module.exports.savePerson = (req,res) =>
const person = new Person( ...req.body )
person.save()
.then(person =>
res.send(person);
)
.catch(err =>
res.status(400).json(err)
);
javascript node.js mongodb express mongoose
javascript node.js mongodb express mongoose
asked Nov 14 '18 at 18:11
CesarCedanoVCesarCedanoV
214
214
This is not promise vs async/await, because async/await is syntactic sugar for promises. This is Mongoose promise vs callback API. Callback API is obsolete. And it certainly shouldn't be used with async/await like in example above
– estus
Nov 14 '18 at 19:08
add a comment |
This is not promise vs async/await, because async/await is syntactic sugar for promises. This is Mongoose promise vs callback API. Callback API is obsolete. And it certainly shouldn't be used with async/await like in example above
– estus
Nov 14 '18 at 19:08
This is not promise vs async/await, because async/await is syntactic sugar for promises. This is Mongoose promise vs callback API. Callback API is obsolete. And it certainly shouldn't be used with async/await like in example above
– estus
Nov 14 '18 at 19:08
This is not promise vs async/await, because async/await is syntactic sugar for promises. This is Mongoose promise vs callback API. Callback API is obsolete. And it certainly shouldn't be used with async/await like in example above
– estus
Nov 14 '18 at 19:08
add a comment |
1 Answer
1
active
oldest
votes
Don't use a callback if you want to await
it:
module.exports.savePerson = async (req,res) =>
try
const doc = await new Person( ...req.body ).save();
res.send(doc);
catch(error)
res.status(400).json(err);
;
So i want to know should we use [.thens] or [awaits] ?
Thats opinion based, but in my eyes await
is way more readable, especially when you have to wait for multiple things.
Security advise: Directly passing the clients data to the database without validation is a bit dangerous.
add a comment |
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%2f53306400%2fdifference-on-mongoose-using-promise-or-async-await%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Don't use a callback if you want to await
it:
module.exports.savePerson = async (req,res) =>
try
const doc = await new Person( ...req.body ).save();
res.send(doc);
catch(error)
res.status(400).json(err);
;
So i want to know should we use [.thens] or [awaits] ?
Thats opinion based, but in my eyes await
is way more readable, especially when you have to wait for multiple things.
Security advise: Directly passing the clients data to the database without validation is a bit dangerous.
add a comment |
Don't use a callback if you want to await
it:
module.exports.savePerson = async (req,res) =>
try
const doc = await new Person( ...req.body ).save();
res.send(doc);
catch(error)
res.status(400).json(err);
;
So i want to know should we use [.thens] or [awaits] ?
Thats opinion based, but in my eyes await
is way more readable, especially when you have to wait for multiple things.
Security advise: Directly passing the clients data to the database without validation is a bit dangerous.
add a comment |
Don't use a callback if you want to await
it:
module.exports.savePerson = async (req,res) =>
try
const doc = await new Person( ...req.body ).save();
res.send(doc);
catch(error)
res.status(400).json(err);
;
So i want to know should we use [.thens] or [awaits] ?
Thats opinion based, but in my eyes await
is way more readable, especially when you have to wait for multiple things.
Security advise: Directly passing the clients data to the database without validation is a bit dangerous.
Don't use a callback if you want to await
it:
module.exports.savePerson = async (req,res) =>
try
const doc = await new Person( ...req.body ).save();
res.send(doc);
catch(error)
res.status(400).json(err);
;
So i want to know should we use [.thens] or [awaits] ?
Thats opinion based, but in my eyes await
is way more readable, especially when you have to wait for multiple things.
Security advise: Directly passing the clients data to the database without validation is a bit dangerous.
answered Nov 14 '18 at 18:14
Jonas WilmsJonas Wilms
59.1k53152
59.1k53152
add a comment |
add a comment |
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%2f53306400%2fdifference-on-mongoose-using-promise-or-async-await%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
This is not promise vs async/await, because async/await is syntactic sugar for promises. This is Mongoose promise vs callback API. Callback API is obsolete. And it certainly shouldn't be used with async/await like in example above
– estus
Nov 14 '18 at 19:08