Handling a PUT API call to write to a database using promisesNode module using promises and the revealing...

Is there a good way to store credentials outside of a password manager?

Is expanding the research of a group into machine learning as a PhD student risky?

What is the meaning of the square breakpoint in Visual Studio?

What does 算不上 mean in 算不上太美好的日子?

Efficient way to transport a Stargate

How to create a 32-bit integer from eight (8) 4-bit integers?

How to write papers efficiently when English isn't my first language?

Abbreviate author names as "Lastname AB" (without space or period) in bibliography

Sort a list by elements of another list

What deity do celestials/aasimars worship?

What is the difference between "behavior" and "behaviour"?

How did Doctor Strange see the winning outcome in Avengers: Infinity War?

What does "I’d sit this one out, Cap," imply or mean in the context?

How can a function with a hole (removable discontinuity) equal a function with no hole?

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

Invade the Pyramid if you Dare

How does the UK government determine the size of a mandate?

How does buying out courses with grant money work?

Where does the Z80 processor start executing from?

I'm in charge of equipment buying but no one's ever happy with what I choose. How to fix this?

Hostile work environment after whistle-blowing on coworker and our boss. What do I do?

India just shot down a satellite from the ground. At what altitude range is the resulting debris field?

Is HostGator storing my password in plaintext?

Go Pregnant or Go Home



Handling a PUT API call to write to a database using promises


Node module using promises and the revealing module patternReading the contents at three URLs using PromisesRewriting authentication controller using promisesAsynchronous database lookups in Node.JS using PromisesNode.js module using Promises (client for KeePassHttp)Handling login using promisesDeleting rooms using nested promisesFetching and shortening URLs with API calls using PromisesJavaScript / Express error handling w/ promisesRead files from a directory using Promises













0












$begingroup$


The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



The eslint linting tool complains saying "avoid nesting promises" and "Each then() should return a value or throw". I'm new to promises and I am not sure how to improve my code.



app.put('/api/v0/note/:id', (req, res) => {
const id = req.params.id;
const uid = req.user ? req.user.uid : null;
return user_can_edit_note(uid, id).then(yes => {
if (yes) {
return db.collection('notes').doc(id).update({
title: req.body.title,
text: req.body.text,
author_uid: req.user ? req.user.uid : null,
updated_on: admin.firestore.Timestamp.now()
}).then(() => {
return res.json({
ok: "ok"
});
});
} else {
return res.status(403).json({
error: "Permission Denied",
note_id: id
});
}
}).catch((err) => {
console.error(err);
return res.status(500).json({error: String(err)});
});
});









share|improve this question











$endgroup$








  • 1




    $begingroup$
    The current question title, which states your concerns about the code, is too general to be useful here. Please edit to the site standard, which is for the title to simply state the task accomplished by the code. Please see How to get the best value out of Code Review: Asking Questions for guidance on writing good question titles.
    $endgroup$
    – Toby Speight
    12 mins ago
















0












$begingroup$


The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



The eslint linting tool complains saying "avoid nesting promises" and "Each then() should return a value or throw". I'm new to promises and I am not sure how to improve my code.



app.put('/api/v0/note/:id', (req, res) => {
const id = req.params.id;
const uid = req.user ? req.user.uid : null;
return user_can_edit_note(uid, id).then(yes => {
if (yes) {
return db.collection('notes').doc(id).update({
title: req.body.title,
text: req.body.text,
author_uid: req.user ? req.user.uid : null,
updated_on: admin.firestore.Timestamp.now()
}).then(() => {
return res.json({
ok: "ok"
});
});
} else {
return res.status(403).json({
error: "Permission Denied",
note_id: id
});
}
}).catch((err) => {
console.error(err);
return res.status(500).json({error: String(err)});
});
});









share|improve this question











$endgroup$








  • 1




    $begingroup$
    The current question title, which states your concerns about the code, is too general to be useful here. Please edit to the site standard, which is for the title to simply state the task accomplished by the code. Please see How to get the best value out of Code Review: Asking Questions for guidance on writing good question titles.
    $endgroup$
    – Toby Speight
    12 mins ago














0












0








0


1



$begingroup$


The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



The eslint linting tool complains saying "avoid nesting promises" and "Each then() should return a value or throw". I'm new to promises and I am not sure how to improve my code.



app.put('/api/v0/note/:id', (req, res) => {
const id = req.params.id;
const uid = req.user ? req.user.uid : null;
return user_can_edit_note(uid, id).then(yes => {
if (yes) {
return db.collection('notes').doc(id).update({
title: req.body.title,
text: req.body.text,
author_uid: req.user ? req.user.uid : null,
updated_on: admin.firestore.Timestamp.now()
}).then(() => {
return res.json({
ok: "ok"
});
});
} else {
return res.status(403).json({
error: "Permission Denied",
note_id: id
});
}
}).catch((err) => {
console.error(err);
return res.status(500).json({error: String(err)});
});
});









share|improve this question











$endgroup$




The following function is accepting PUT connection to a server API, checks authorization to write and then performs write to a database.



The eslint linting tool complains saying "avoid nesting promises" and "Each then() should return a value or throw". I'm new to promises and I am not sure how to improve my code.



app.put('/api/v0/note/:id', (req, res) => {
const id = req.params.id;
const uid = req.user ? req.user.uid : null;
return user_can_edit_note(uid, id).then(yes => {
if (yes) {
return db.collection('notes').doc(id).update({
title: req.body.title,
text: req.body.text,
author_uid: req.user ? req.user.uid : null,
updated_on: admin.firestore.Timestamp.now()
}).then(() => {
return res.json({
ok: "ok"
});
});
} else {
return res.status(403).json({
error: "Permission Denied",
note_id: id
});
}
}).catch((err) => {
console.error(err);
return res.status(500).json({error: String(err)});
});
});






javascript node.js database promise






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 mins ago









200_success

130k17155419




130k17155419










asked 6 hours ago









Emanuele PaoliniEmanuele Paolini

2,0021712




2,0021712








  • 1




    $begingroup$
    The current question title, which states your concerns about the code, is too general to be useful here. Please edit to the site standard, which is for the title to simply state the task accomplished by the code. Please see How to get the best value out of Code Review: Asking Questions for guidance on writing good question titles.
    $endgroup$
    – Toby Speight
    12 mins ago














  • 1




    $begingroup$
    The current question title, which states your concerns about the code, is too general to be useful here. Please edit to the site standard, which is for the title to simply state the task accomplished by the code. Please see How to get the best value out of Code Review: Asking Questions for guidance on writing good question titles.
    $endgroup$
    – Toby Speight
    12 mins ago








1




1




$begingroup$
The current question title, which states your concerns about the code, is too general to be useful here. Please edit to the site standard, which is for the title to simply state the task accomplished by the code. Please see How to get the best value out of Code Review: Asking Questions for guidance on writing good question titles.
$endgroup$
– Toby Speight
12 mins ago




$begingroup$
The current question title, which states your concerns about the code, is too general to be useful here. Please edit to the site standard, which is for the title to simply state the task accomplished by the code. Please see How to get the best value out of Code Review: Asking Questions for guidance on writing good question titles.
$endgroup$
– Toby Speight
12 mins ago










0






active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

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: "196"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216388%2fhandling-a-put-api-call-to-write-to-a-database-using-promises%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
















draft saved

draft discarded




















































Thanks for contributing an answer to Code Review Stack Exchange!


  • 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.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216388%2fhandling-a-put-api-call-to-write-to-a-database-using-promises%23new-answer', 'question_page');
}
);

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







Popular posts from this blog

Fairchild Swearingen Metro Inhaltsverzeichnis Geschichte | Innenausstattung | Nutzung | Zwischenfälle...

Pilgersdorf Inhaltsverzeichnis Geografie | Geschichte | Bevölkerungsentwicklung | Politik | Kultur...

Marineschifffahrtleitung Inhaltsverzeichnis Geschichte | Heutige Organisation der NATO | Nationale und...