Ответы пользователя по тегу Node.js
  • Из-за чего 100% загрузка CPU при использовании watch (fs.watch/gulp.watch/forever --watch/т.д.) в NodeJS?

    @quex Автор вопроса
    Отказался от Workstation в пользу Player, он полегче и к тому же бесплатный. Установил последнюю версию wmware tools. Полет вроде нормальный.
    Ответ написан
    Комментировать
  • Как обрезать картинку в Graphics Magick?

    @quex Автор вопроса
    Путем проб и ошибок решение было найдено. Чтобы "-bordercolor transparent" действительно был прозрачным, нужно предварительно добавить matte-канал командой "-matte"
    Ответ написан
    Комментировать
  • Node.js express.js: как подружить redirect с cookie чтоб и куки устанавливались и редирект происходил?

    @quex
    куки тоже через хедеры ставятся :)
    у вас в обработчике on('data', ... ) ошибка. вам название переменной chunk должно было об этом намекнуть. при получении данных событие data наступает многократно - данные приходят не сразу, а кусочками, каждый кусочек - chunk. вам сперва нужно эти кусочки собрать, а потом уже с ними манипулировать.
    ...
    var buffer = '';
    ...
    http.get(options).on('data', function(chunk){
        buffer += chunk.toString();
    }).on('end',function(){
         params = JSON.parse(buffer);
         response.cookie('ssid', params.ssid).cookie('sessionurl', params.sessionurl);
         response.redirect('/index');
    });

    как-то так.

    А вообще, мне почему-то кажется, что если одновременно установлены хедеры Set-cookie и Location, Set-cookie проигнорируется, но я не уверен.
    Ответ написан
  • Как получить корневой URL приложения в node.js?

    @quex
    если я правильно понял, нужен путь до файла приложения? скажем вы запускаете приложение /var/www/mysuperapp/app.js и вам нужно получить путь до этого файла.
    если да, то переменная __dirname - то что вам нужно. эта переменная доступна внутри каждого файла, и содержит путь до файла, внутри которого используется.

    если же у вас один файл вкладывается в другой, используется require и нужно везде знать корень приложения (главного файла), то самый простой вариант записать путь главного файла в глобальную переменную и использовать ее во вкладываемых файлах
    /* файл /var/www/mysuperapp.js */
    global.__approot = __dirname;
    require('./requires/child.js');
    
    /* файл /var/www/requires/child.js */
    console.log(__approot); // /var/www/


    если хочется полного контроля - обратите внимание на свойство module.parent, и на объект module в целом, там достаточно много информации содержится, которая может быть полезной во многих случаях.
    Ответ написан
    2 комментария
  • Пример использования Document#init в mongoose

    @quex Автор вопроса
    после углубленного изучения и экспериментов, ответ нашелся. при создании документа конструкцией var item = itemsModel({..}) никакой инициализации не происходит, документ априори считается новым. метод .init() вызывается для результатов запроса (документов) при вызове Model.find, Model.findById, и т.д.
    Таким образом, вся эта ерунда с инициализацией, атрибутами isNew, isInit, т.д. может оказаться полезной, например, в колбэках, когда один и тотже колбэк может применятся как на результаты выборки, так и на созданные документы через конструктор.
    Ответ написан
    Комментировать