Как переименовать ключ ответа mongodb? - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть этот код:

// get a specific question
app.get('/:id', (req, res) => {
    Question.findById(req.params.id, function(err, response){
        if (err) {
            return res.status(404).send();
        }
        console.log(response);
        res.send(response);
    });
});

ответ:

{ 
    _id: '5b9cee54a05caf7c847aee79',
    title: 'How to make a burger?',
    description:'I wanna know the steps that i need to follow...?',
    answers: 0 
}

Я хочу изменить имя _id в ответе на id, прежде чем отправить его клиенту, т.е. я хочу, чтобы ответ был:

{ 
    id: '5b9cee54a05caf7c847aee79',
    title: 'How to make a burger?',
    description:'I wanna know the steps that i need to follow...?',
    answers: 0 
}

Как это сделать?

Ответы [ 4 ]

0 голосов
/ 15 сентября 2018

Все, что вам действительно нужно сделать, это создать новое свойство id, а затем удалить старое свойство _id, например:

// get a specific question
app.get('/:id', (req, res) => {
    Question.findById(req.params.id, function(err, response){
        if (err) {
            return res.status(404).send();
        }
        console.log(response);

        // ---
        response.id = response._id;
        delete response._id;
        // ---

        res.send(response);
    });
});
0 голосов
/ 15 сентября 2018

Когда вы получите ваш JSON, проанализируйте его, чтобы вы могли получить доступ к свойствам, и просто создайте новое свойство id для объекта и присвойте ему значение _id. Затем delete _id и передать JSON (после его повторной строчки, в зависимости от того, как ваш получатель ожидает этого)?

Некий код:

const data = JSON.parse(responseJson)
data.id = data._id
delete data._id
const fixedData = JSON.stringify(data)

Если у вас есть доступ к последним функциям JS, вы также можете удалить ненужные _id, например, так:

const data = JSON.parse(responseJson)`
fixedData = JSON.stringify({
  ...data,
  id: data._id,
  _id: undefined
})
0 голосов
/ 15 сентября 2018

Вы можете использовать Агрегат в MongoDB

db.getCollection('Question').aggregate([{
    $match : {
         "_id" : req.params.id
    }
    },{
    $project : {
        id : '$_id',
        _id : 0, //if not required
        title: 1
        description:1
        answers:1

        }
    } 
    ])
0 голосов
/ 15 сентября 2018

Вы хотите переименовать JSON Key

IE: _id до id

Есть много способов сделать это

Пример 1: редактирование базовой строки

var json = [{"_id": "5b9cee54a05caf7c847aee79", "title": "How to make a burger?", "description":"I wanna know the steps that i need to follow...?", "answers": "0" }];

console.log('Old : ' + JSON.stringify(json));
            
json = JSON.parse(JSON.stringify(json).split('"_id":').join('"id":'));

console.log('New : ' + JSON.stringify(json));

Пример 2. Редактирование базы объекта

var json = '[{"_id": "5b9cee54a05caf7c847aee79", "title": "How to make a burger?", "description":"I wanna know the steps that i need to follow...?", "answers": "0" }]';
            
console.log('OLD : ' + json);
var obj = JSON.parse(json)[0];
obj.id = obj._id;
delete obj._id;

json = JSON.stringify([obj]);

console.log('New : ' + json);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...