Я обнаружил очень странное поведение с запросом HttpClient
get
.
Ответ 1
Отправка API:
{
payload: {
object: {
array: [1, 2, 3]
}
}
}
Угловое получение:
{
payload: {
object: {
array: []
}
}
}
Ответ 2
API отправляет:
{
payload: {
array: [
object: {
array: [1, 2, 3]
}
]
}
}
Angular получает:
{
payload: {
array: [
object: {
array: [1, 2, 3]
}
]
}
}
Кто-нибудь встречал такое поведение?
Обновление
Угловой код:
this.http
.get(`instance/${id}`)
.subscribe(
response => log('get', response),
error => log('error', error)
);
Код API:
async function getInstance(req, res, next) {
const instanceId = sanitize(req.params.id);
if (!instanceId) {
return utils.response[400](res, {
message: 'Missed id'
});
}
if (!instanceId.match(/^[0-9a-fA-F]{24}$/)) {
return utils.response[400](res, {
message: 'Wrong id'
});
}
const model = models['instance'];
const query = model
.schema
.findById(new mongoose.Types.ObjectId(instanceId))
.populate('subInstance')
.select(model.select);
try {
const instance = await query.exec();
if (!instance) {
return utils.response[404](res, {
message: 'Instance not found'
});
}
return utils.response[200](res, {
instance: instance
// I changed the response to this and everything works:
// instance: [instance]
});
} catch (err) {
return utils.response[501](res, err);
}
}
Обновление 2
Код функции ответа:
function sendResponse(response, status, message, payload) {
return response
.status(status)
.send({
status: status,
message: message,
payload: payload
});
}
module.exports = {
200: (res, result) => sendResponse(res, 200, 'SUCCESS', result),
201: (res, result) => sendResponse(res, 201, 'CREATED', result),
204: (res, result) => sendResponse(res, 201, 'UPDATED', result),
205: (res, result) => sendResponse(res, 201, 'REMOVED', result),
301: (res, result) => sendResponse(res, 301, 'REDIRECTED', result),
400: (res, result) => sendResponse(res, 400, 'NOT_VALID', result),
401: (res, result) => sendResponse(res, 401, 'NOT_AUTHENTICATED', result),
403: (res, result) => sendResponse(res, 403, 'NOT_AUTHORIZED', result),
404: (res, result) => sendResponse(res, 404, 'NOT_FOUND', result),
406: (res, result) => sendResponse(res, 406, 'WRONG_TYPE', result),
409: (res, result) => sendResponse(res, 409, 'DUPLICATE', result),
501: (res, result) => sendResponse(res, 501, 'ELSE_SERVER', result)
};
Обновление 3