Что подробнее? В стабильной версии Node.js этого нет, синтаксис async function... ей не известен. Восьмая версия (которой он известен) ещё не стабильна - ни черта нормально не работает. Лично я не крутой чувак, а простой советский пользователь платформы, поэтому юзаю стабильную версию и по поводу async/await не заморачиваюсь (когда будет работать - тогда и посмотрим). Тем более что оно в практическом смысле ничего не даёт, а придумано только для заманухи программистов из других языков, которые боятся "лапши из колбэков" и любят пейсать try-catch.
Александр Дегтярев: Да нет, файл - это всегда последовательность бинарных данных. Технологии разные. AJAX шлёт несколькими пакетами, на хвосте последнего из которых сигнал "конец". А WebSocket, допустим, шлёт message - один непрерывный кусок (бинарных данных же). Поэтому его надо принимать fs.writeFile
В любом случае это делается на уровне операционной системы, а не среды Node.js И потом, что значить "ошибки"? - Если в приложении вписано подключение к БД, а её нет, то оно вообще не запустится.
Прям специально зашёл - спасибо сказать за наводку. Я тут месяца два галопом скакал по верхам кучи фреймвёрков и всё не не мог определиться, на каком же остановится всерьёз? Но душой почему-то склонялся именно к React - наверное, потому что он по своему устройству в html не мешается (как Angular или Vue). А тут вот оказывается, что я вполне правильно склонялся, и есть вполне реальный пример Express+React, да ещё +Webpack. Вряд ли я буду прям пользоваться этим MERN, но сам подход к "архитектуре" понятен просто через 10 минут после разворачивания.
(единственно, я пока так и не могу догнать окончательно, за каким чёртом к Експрессу прикручивать React или ещё хоть что-то - всё ведь можно и без него прекрасно сделать)
mrusklon: Тут я не знаю, я на Node.js пишу для сервера. Но "танцы с бубном" непременно нужны - данные же идут в закодированном виде, их нужно декодировать - с помощью какого-нибудь бубна. Я не знаю, как это делается в PHP, но результат наверняка какой-то такой же - тело запроса как раз и разделяется на files и fields, файл записывается в temp под случайным именем и отдаётся его первоначальное имя и случайное имя и путь до него сейчас.
Короче, это вы отдельный вопрос мастерам этого фантастического языка задайте.
var formData = new FormData(document.forms.anyform);
- и отдать эту переменную в пункт data: formData.
Да, и contentType указать - multipart/form-data
Всего делов.
Но вообще, такой запрос нельзя на сервере проверить на "межсайтовую атаку" - на сервере тело запроса нужно декодировать, а до этого отправленный с формой токен не виден (ну или я не знаю, как это сделать). Поэтому лучше разделять.
Хотя лично я - если сильно хочется, чтобы и то, и другое отправлялось нажатием одной кнопки - отправлял как-то файл по WebSocket параллельно форме (тег <input type="file" не вписан внутрь тега <form>), но это долго объяснять.
regix: Он говорит о том, что нужно сначала разобраться с файлом mongod.config У вас что-то изначально не правильно работает. Такое впечатление, что не вы устанавливали базу данных. После установки, по умолчанию, в конфиг-файле, во-первых, вообще закрыт вход "со стороны", только с локалхоста, а во-вторых, в разделе security не прописано ничего, в том числе - авторизации вообще: если нет возможности стороннего подключения к базе - то и не нужна никакая защита-авторизация. Поэтому изначально и существует порядок: 1. Создать Админа в базе данных admin 2. Разрешить стороний доступ (просто стереть строчку в файле 127.0.0.1) и включить авторизацию (authorization: enable) 3. Зайти как Админ (без логина-пароля теперь и не пустит) в конкретную базу и создать там пользовательского юзера readWrite.
Там же в документации все шаги расписаны. https://docs.mongodb.com/manual/tutorial/enable-au... Я помню, что об этот же вопрос первый раз спотыкался. Потом разобрался и "на бело" всё переделывал. По инструкции. Главный вопрос, как я понял: создаётся Админ - для того только, чтобы в конкретных базах создавать юзеров readWrite.
Вы же сначала создавали Админа - с ролью userAdminAnyDatabase - в базе admin. Потом его же можно было с ролью чтение-запись создать в этой базе (зайдя в неё), или другого там создать. Админ может иметь эту, другую роль - в конкретной уже базе. Как-то так.