Извините, я не готов тратить на вас своё время. Вы не знаете основ и не можете объяснить чего хотите сделать. Пытаться выдавливать из вас информацию, чтобы решить вашу же задачу, мне не интересно.
Я вам страшный секрет открою - я под ноду в жизни писал часов 6 в сумме. Никаких специальных знаний для решения вашей задачи не требуется - только знание основ js и внимательность.
Ну так это нормальная ошибка, её console.assert кидает, потому что у вас "huyandex": false, а mymodule.test('huyandex') возвращает true, из-за особенности логики проверки, которую я описал.
Написать корректный код. Пример, который я привёл, делает именно то, что вам нужно. То, что вы его вставили куда-то не туда, это уже далеко за пределами данного вопроса.
Сделайте пример на jsfiddle со всем необходимым, задайте новый вопрос по новой проблеме.
Пользователи сайта != пользователи файловой системы. Если вам нужно их как-то связать, то создавайте вместе с пользователем сайта пользователя ОС и сохраняйте его данные вместе с профилем. А там уже делайте что хотите.
Максим Тюльпаков: у вас два пути - прочитать спеку, ссылку на которую я добавил в ответ или попробовать сделать, скормить валидатору и посмотреть что получится.
Принцип прост - если вы изобретаете велосипед и вместо стандартного форматирования тела POST-запроса, которое автоматически поддерживается всем, что связано с вебом, пишете в тело сериализованный json (используете свой нестандартный формат), то вам нужно использовать php://input. Для всего остального есть MasterCard.
Корректно сформированный POST-запрос автоматически обрабатывается php и вы можете работать с суперглобальным массивом $_POST. Но для этого, разумеется, запрос нужно изначально нормально сформировать. Ссылку на то, как это делается, я дал ранее.
Андрей: то, что вы делаете - извращение. Так делать нельзя ни при общении клиент-сервер, ни при общении сервер-сервер (что ничем от клиент-серверного взаимодействия не отличается).
Я видел, но это как раз адский hack, в том смысле что "работает хз почему". Вариант с добавлением скрытых полей - это workaround, да, неудобно, но зато логика работы понятна.