как преобразовать ответ массива API в json в JavaScript - PullRequest
1 голос
/ 16 января 2020

У меня есть API, который возвращает данные, структурированные следующим образом:

// код возврата response.status (200). json (startdate)

данные результатов:

[
    "2020-01-16",
    "2020-01-18",
]

я хочу, чтобы этот API возвращал результат следующим образом:

Code: 200
Content:
{
    "availableDates": [
      "2017-11-24",
      "2017-11-27"
    ],
    "status": "SUCCESS",
    "message": ""
}

это мой полный код, где я получаю данные в виде массива

app.get('/api/getBusyDays',(request, response) =>{
    odoo.connect(function (err) {



        console.log(' OdooStartDate' + dateTimeStartUsed + 'OdooStopdate' + dateTimeEndUsed);
        var params1 = [];
        params1.push(inParams1);

        console.log(' search params '+ JSON.stringify(params1));
        odoo.execute_kw('calendar.event', 'search_read', params1, function (err, value) {
            if (err) { return console.log(err) }
            if(value) {
                if (value.length > 0) {


                    value.forEach(function(a) {
                        a.start_datetime = moment(a.start_datetime).format('YYYY-MM-DD');
                        a.stop_datetime = moment(a.stop_datetime).format('YYYY-MM-DD');
                    });

                    const startdate = [...new Set(value.map(val => val.start_datetime))];

                    startdate.sort();


                   // return response.status(200).json( value)

                    return response.status(200).json(startdate)
                }
            }

Ответы [ 2 ]

3 голосов
/ 16 января 2020

Вы можете просто создать объект, подобный этому:

let arrVal = [
  "2017-11-24",
  "2017-11-27"
];
// return Object or your framework (Express or KOA or) response Object
console.log({
  "Code": 200,
  "Content": {
    "availableDates": arrVal,
    "status": "SUCCESS",
    "message": ""
  }
})

Обновление :

На основе комментариев к этому ответу измените свой ответ так, чтобы он выглядел следующим образом:

app.get('/api/getBusyDays',(request, response) =>{
    odoo.connect(function (err) {



        console.log(' OdooStartDate' + dateTimeStartUsed + 'OdooStopdate' + dateTimeEndUsed);
        var params1 = [];
        params1.push(inParams1);

        console.log(' search params '+ JSON.stringify(params1));
        odoo.execute_kw('calendar.event', 'search_read', params1, function (err, value) {
            if (err) { return console.log(err) }
            if(value) {
                if (value.length > 0) {


                    value.forEach(function(a) {
                        a.start_datetime = moment(a.start_datetime).format('YYYY-MM-DD');
                        a.stop_datetime = moment(a.stop_datetime).format('YYYY-MM-DD');
                    });

                    const startdate = [...new Set(value.map(val => val.start_datetime))];

                    startdate.sort();


                   // return response.status(200).json( value)

                    return response.status(200).json({"code": 200, "content": {"availableDates": startdate, "status": "SUCCESS", "message": ""}})
                }
            }
1 голос
/ 16 января 2020

Вы можете создать пустой объект, задать ему свойства и отправить его в ответ от службы API вашего узла.

let data = [
    "2017-11-24",
    "2017-11-27"
];

let response = [];
response.data = data;
response.code = 200;
response.status = 'success';
response.message = 'Mission Successful';

return response;
...