Ich möchte meine CRUD Logic aus den Routen herausnehmen und in eine Serviceebene einfügen.Codierung der Serviceebene mit Versprechen
Also im Grunde mag ich so das Service-Layer nennen:
const service = require("../service/post")
router.post("/new", (req, res) => {
service.createPost(req.body.titel, req.body.description, req.body.tags, function(id){
console.log("Created post with id: " + id)
res.redirect("index")
})
})
In meiner postService.js
Datei habe ich die folgende Funktion:
function createPost(titel, description, tags, callback) {
const post = {
titel: titel,
description: description,
tags: tags,
createdAt: new Date(),
deleted: false,
}
console.log("Create Post: " + post.titel + " " + post.description + " " + post.tags + " " + post.createdAt + " " + post.deleted)
knex("posts").insert(post, "id").then(id => {
console.log(id)
callback(id[0])
})
}
Derzeit ich callback
bin mit dieser Funktion zu handhaben .
Irgendwelche Vorschläge, wie man einen vielversprechenderen Stil verwendet, um die ID zurückzugeben, und der Code im Router wartet, wenn das Versprechen abgeschlossen ist?
Vielen Dank für Ihre Antworten!
Eine Sache, die ich extra tun würde, ist in einem Versuch außer zu wickeln. Node.JS wird derzeit einen Fehler protokollieren, aber in Zukunft möglicherweise nur die App beenden. Grundsätzlich müssen alle End-Point-Versprechungen in node.js wirklich behandelt werden. – Keith
@Keith Fehlerbehandlung aus Platzmangel weggelassen, aber ja ich stimme zu, haben die Service-Schicht vollständig die Speicherfehler einkapseln. – James