У меня есть функция, отправляющая объект в NodeJS.

function addRequest(request_item){
    var request = new XMLHttpRequest;
    request.open("GET", "http://localhost:3000/add_register_request"+"?request_item="+request_item)
    request.send(request_item);
    console.log("Sent");
    document.location.reload(true);
};

Request_item - это объект.

app.get('/add_register_request', function(req,res){
    console.log("ADDDD")
    var request = req.query.request_item
    console.log(`SQL is ${request}`) //This gives {object Object}
})

JSON.stringify (request) просто возвращает '{объект объекта}'. Разница лишь в том, что это сейчас в кавычках.

Как я могу получить доступ к объекту в моем NodeJS? Заранее спасибо!

1
VoidProgrammer 15 Авг 2019 в 09:06

2 ответа

Лучший ответ

Если request_item является объектом и вы соединяете его со строкой, он превращается в объект строкового объекта, который вы получаете и видите в конечной точке /add_register_request.

const request_item = { foo: 'bar' };

const request_string = "http://localhost:3000/add_register_request"+"?request_item=" + request_item;

console.log(request_string);

Если вы пытаетесь отправить данные на сервер, чтобы сохранить их в какой-либо базе данных или чем-то в этом роде, вам следует использовать глагол POST вместо GET и отправлять данные внутри тела запроса, а не в качестве параметра ,

Кроме того, я думаю, вы могли забыть скобки при инициализации new XMLHttpRequest. Я думаю, что это должно быть new XMLHttpRequest()

1
deafening_roar 15 Авг 2019 в 06:14

Переменные запроса принимают строки, а не объекты. Если вы хотите передать весь объект js, вы можете закодировать его в JSON, а затем в дальнейшем кодировать в base64. Другой стратегией может быть преобразование каждого атрибута request_item в запрос. Или вы можете использовать другой метод HTTP, который содержит тело для отправки объекта.

function addRequest(request_item){
    var request = new XMLHttpRequest;
    request.open(
        "GET", 
        "http://localhost:3000/add_register_request"
            +"?request_item_value_1="+request_item.value_1
            +"&request_item_value_2="+request_item.value_2
    )
    request.send(request_item);
    console.log("Sent");
    document.location.reload(true);
};

Тогда на вашем сервере

app.get('/add_register_request', function(req,res){
    console.log("ADDDD")
    var request = {
        value_1: req.query.request_item_value_1,
        value_2: req.query.request_item_value_2,
    }
    console.log(`SQL is ${request}`) //This gives {object Object}
})

Где request_item.value_1 и request_item.value_1 являются строками или значениями, которые могут быть объединены в строки

1
Laurentiu Turcu 15 Авг 2019 в 06:31