Fehler beim Übergeben von Werten in der Versprechungskette. Ich habe einen CustomerController dieÜbergabe des Werts in der Versprechungskette an die Handler
var express = require('express')();
var customerRepo = require('../repositories/customerRepo');
var customerController = function() {
var get = function (req, res) {
if (typeof(req.query.offset) === 'undefined' || typeof(req.query.return) === 'undefined')
res.status(422).send({'message': 'missing paging parameters'});
req.query.offset === '' ? req.query.offset = 0 : req.query.offset;
req.query.return === '' ? req.query.return = 50 : req.query.return;
let getCustomers = customerRepo.getCustomers(req.query.offset, req.query.return);
let getProfiles = customerRepo.getProfiles(customerList);
let sendPayLoad= function (customerList) {
console.log(customerList); ///// <===============
res.send(customerList);
}
getCustomers
.then(getProfiles)
.then(sendPayLoad)
.catch(function (err) {
res.status(500).send(err);
})
}
return {
get: get
}
}
module.exports = customerController;
die beiden Methoden in CustomerRepo
var getCustomers = function (offset, _return) {
return new Promise(function (resolve, reject) {
{
var customers = [];
var sql = 'sql here';
SqlQuery(sql)
.then(function (rows) {
for (var i = 0; i < rows.length; i++) {
var customer = new Customer();
customer = rows[i];
customers.push(customer);
}
resolve(customers[0]);
})
.catch(function (err) {
reject(err);
})
}
});
}
var getProfiles = function (customers) {
return new Promise(function (resolve, reject) {
let ids = customers.map(function (item) {
return item.CustomerId;
});
var customerList = [];
let sql = 'sql here';
SqlQuery(sql)
.then(function (rows) {
// do some processing to extract profile data from rows
and push to customerList so my profiles can be retrieved like customers[0].Profiles
console.log(customerList);///// <===============
resolve(customerList);
return customerList;
})
.catch(function (err) {
reject(err);
})
});
}
module.exports = {
getCustomers: getCustomers,
getProfiles: getProfiles
}
console.log (Kundenliste) in getProfiles erzeugt die erforderliche json Antwort die ich suche nach CustomerRepo spricht, wie die unten
[{ "CustomerId" : 123,
"Name" : "myCustomer",
.....
Profiles[{
"profile1" : "myProfile",
.....
}]
]
aber meine res.send (customerList) in der Steuerung gibt nur den Kunden ohne die Profile zurück. Das Problem besteht im Wesentlichen darin, Werte zwischen Versprechen zu vermitteln.
Ich sehe keinen Ort, den Sie tatsächlich Ihre 'send()' Funktion nennen. – jfriend00
Bitte vermeiden Sie die Verheißung Anti-Pattern des Einwickelns eines bestehenden Versprechens in ein neues Versprechen. Sie können das Versprechen, das Sie bereits haben, einfach zurückgeben, anstatt es in ein neu erstelltes Versprechen einzufügen. Du machst das mehrere Orte. – jfriend00
@ jfriend00, vielen Dank für die Rückmeldung, Entschuldigung neu an der ganzen Sache und ich habe einen Beitrag diesbezüglich gelesen. Ich werde ändern, aber zuerst nicht, wie das Problem zu lösen –