Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Доступ к request.body #1

Open
Yunnii opened this issue Nov 27, 2012 · 6 comments
Open

Доступ к request.body #1

Yunnii opened this issue Nov 27, 2012 · 6 comments

Comments

@Yunnii
Copy link

Yunnii commented Nov 27, 2012

Никак не могу получить доступ к данным в реквесте (отсылаются события, добавленные в календарь). Я уже и express.bodyParser() парсила, и тип данных прямо выставляла в json.

  • посмотрела, что посылается в post запросе - события пересылаются кракозябрами ( прям (
@azproduction
Copy link
Member

Кодировка совпадает? Скачаю попробую запустить.

@Yunnii
Copy link
Author

Yunnii commented Nov 27, 2012

Я пробовала прямо указывать кодировку для запроса чз $.ajax - scriptCharset: "utf-8", contentType: "application/json; charset=utf-8", никак (

@azproduction
Copy link
Member

var
//  path = require('path'),
//  connect = require('connect'),
    fs = require('fs'),
    // Полный путь для npm модулей прописывать не нужно
    express = require('express');

var app = express();
var staticDir = __dirname;

// use-case bodyParser другой
// POST {"name": "value"} -> request.body.name === "value"
// У тебя же формат другой - [{}, {}, {}]
// app.use(express.bodyParser());

app.post('/current-event.json', function (request, response) {
    // request - это поток данных на чтение Readable Stream,
    // который можно переправить в поток на запись WriteStream - твой файл
    // без кэшированя промежуточного результата
    // request json data -> current-event.json
    request.pipe(fs.createWriteStream('./current-event.json'));
    response.send("ok");
});

// или можно прочитать
// http://stackoverflow.com/questions/9920208/expressjs-raw-body
// и сделать сложнее ;-)

app.use(express.static(staticDir));

app.listen(8080);

@azproduction
Copy link
Member

Вообще Stream'ы это очень эффективная техника, позволяющая уменьшить расходы памяти за счет потоковой обработки результата.

  1. Можно дождаться пока весь файл прочитается, а потом его записать (весь файл будет в памяти)
  2. Можно переправить входящий поток сразу в файл

http://maxogden.com/node-streams.html
http://nodemanual.org/latest/nodejs_dev_guide/understanding_streams.html

@azproduction
Copy link
Member

Оффтоп:

                    <textarea id="description" name="description" rows=3 >
                    </textarea>

Текст между textarea и /textarea (куча пробелов и перенос строк) попадает в текст.

<textarea id="description" name="description"></textarea>

👍

@Yunnii
Copy link
Author

Yunnii commented Nov 27, 2012

хорошо, щас все поправим =) спасибо

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants