Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- GoodSpeed: 3I/Atlas: Üstökös vagy idegen civilizáció űrhajója?
- Trewerr: Analóg-digitális jelátalakítás (zenefájlok leegyszerűsítésével magyarázva)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- GoodSpeed: Nem vénnek való vidék - Berettyóújfalu
- Gurulunk, WAZE?!
- Magga: PLEX: multimédia az egész lakásban
- eBay-es kütyük kis pénzért
-
LOGOUT
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Jim-Y
veterán
Sziasztok.
Promise-os kérdésem lenne. Arra lennék kváncsi, hogy hogyan lenne szerintetek érdemes használni, vagy hogy elegáns használni a promise-okat. Adott a következő szituáció:
- van egy REST service:
server.get( '/get/articles', getArticles );
- van azt ezt feldolgozó getArticles függvény
- illetve van egy articleProvider osztály/modul amit a getArticles függvényből hívok meg. Ponstosabban annak findAll metódusát. Ez felelős az adatbázisból való kiolvasásértA kérdés, hogy a getArticles / findAll függvényt hogy kéne megrni, több (működő) verzió is született már, de nem tudom eldönteni, hogy melyik a szép/jó/használható megoldás.
Megoldás 1, ez született legkésőbb, szerintem ez a legjobb:
function getArticles( req, res, next ) {
var promise = new mongoose.Promise;
promise.onResolve(function( err, articles ) {
if( err ) {
console.error( err );
res.send("Could not read articles");
}
res.send( articles );
});
articleProvider.findAll( promise );
}ArticleProvider.prototype.findAll = function( promise ) {
this.Article.find({}, function ( err, articles ) {
if( err ) {
promise.reject(new Error( err ));
}
promise.fulfill( articles );
});
}Megoldás 2:
function getArticles( req, res, next ) {
articleProvider.findAll().fulfill(res);
//articleProvider.findAll()
.reject(new Error("Valamiért rejecteljük"));
}ArticleProvider.prototype.findAll = function() {
var promise = new Promise,
self = this;
promise.onResolve(function( err, res ) {
if( err ) {
console.error( err );
}
self.Article.find({}, function( err, articles ) {
if( err ) {
promise.reject(new Error( err ));
}
res.send( articles );
});
});
return promise;
};Ez a reject-re amúgy sem működik jól, mert a res-t nem tudjuk átadni.
Megoldás 3:
Ez jó, illetve kompakt, de igy meg nem tudjuk rejectelni ha kéne.
function getArticles( req, res, next ) {
var promise = articleProvider.findAll();
promise.onResolve(function( err, articles ) {
if( err ) {
res.send(new Error( err ));
}
res.send( articles );
});
}ArticleProvider.prototype.findAll = function() {
return this.Article.find().exec();
};stb, még tudnék pár verziót összerni

Vélemények?
Üdv, és köszi. Remélem érthető a példakód ^^
megj: mindhárom megoldás működik egyébként.
Új hozzászólás Aktív témák
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen videókártyát?
- Gaming notebook topik
- Motorola Edge 70 - többért kevesebbet
- ASUS routerek
- A fociról könnyedén, egy baráti társaságban
- Kezdő fotósok digitális fényképei
- BestBuy topik
- sziku69: Fűzzük össze a szavakat :)
- Háztartási gépek
- További aktív témák...
- Újszerű!! Lenovo X1 Carbon GEN6 / i7-8650U / 16GB RAM / 500GB SSD / Magyar v.bill
- Új Prémium vezeték nélküli billentyűzet eladó Magyar (PBT) kupakokkal
- GAMER INTEL I9 9900K/ 32GB DDR4 / RTX 2080Ti / 1TB NVME SSD /
- 27% - NZXT C1200 1200W 80 PLUS Gold Tápegység
- GAMER INTEL I5 12400 / 16GB DDR4 / RTX 3060 12GB / 250GB SSD / 1TB HDD
- Telefon felvásárlás!! Samsung Galaxy A22/Samsung Galaxy A23/Samsung Galaxy A25/Samsung Galaxy A05s
- GYÖNYÖRŰ iPhone 13 Pro 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3082
- iKing - Xiaomi 14T Pro Titan Gray Vékony, prémium kivitel, nagy kijelző 12/512
- AKCIÓ! Apple Mac Studio M1 MAX 2022 32GB 512GB számítógép garanciával, hibátlan működéssel
- magyar billentyűzet - 165 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő


