Я работаю над фазерной игрой, которая должна отправлять данные игрока на сервер для проверки.Вот мой код для этого:
postUserInfo(callback, context, loader, data) {
let body = `prefix=${data.prefix}&prefix_id=${data.prefix_id}&suffix=${data.suffix}&suffix_id=${data.suffix_d}&password=${data.password}`;
const realUrl = this.url + 'saveUserInfo';
let xhr = new XMLHttpRequest();
xhr.open('POST', realUrl, true);
xhr.timeout = this.timeout;
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200 || xhr.status === 201) {
console.log(xhr.responseText);
var jsonValue = JSON.parse(xhr.responseText);
loader.style.display = 'none';
callback(jsonValue.message);
}
}
};
xhr.send(body);
}
А вот мой код на стороне сервера, основанный на this :
const express = require('express')
const app = express()
const { parse } = require('querystring');
app.post('/saveUserInfo', function (req, res) {
var body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
let data = parse(body)
console.log(data);
res.end(data);
});
});
Я просто пытаюсь передатьданных с как можно меньшим количеством внешних модулей или анализаторов тела, потому что это небольшая проблема, которую мне нужно исправить, прежде чем решать более серьезную проблему - тестирование вставки базы данных и помещение кода в AWS Lambda (где я предполагаю, что некоторые из них не будутработа).
Однако, даже это поставило меня в тупик.
Если игра публикуется, это ответ сервера (до сбоя):
{ prefix: 'shy',
prefix_id: 'undefined',
suffix: 'ant',
suffix_id: 'undefined',
pin: 'undefined' }
_http_outgoing.js:558
throw new TypeError('First argument must be a string or Buffer');
^
Почтальонс другой стороны, кажется, что они публикуют совершенно разные данные с тем же результатом:
{ '----------------------------117273776358694001644449\r\nContent-Disposition: form-data; name': '"prefix"\r\n\r\nsmall\r\n----------
------------------117273776358694001644449\r\nContent-Disposition: form-data; name="prefixID"\r\n\r\n2\r\n----------------------------
117273776358694001644449\r\nContent-Disposition: form-data; name="suffix"\r\n\r\nkangaroo\r\n----------------------------1172737763586
94001644449\r\nContent-Disposition: form-data; name="suffixID"\r\n\r\n10\r\n----------------------------117273776358694001644449--\r\n
' }
_http_outgoing.js:558
throw new TypeError('First argument must be a string or Buffer');
^
Что именно я делаю не так?Это выглядит так просто в примере.