Я не могу понять, почему рек.param ('length') возвращает 0


Я использую паруса.js (который основан на Express), и я посылаю form input с именем length , который имеет value из '1000', например:

<select name="length">
    <option value="1000">1000</option>
</select>

Серверная сторона, я сделал некоторые тесты, и это то, что я получаю

req.param('length');  // returns 0
req.params.length;    // returns 0
req.params.all()      // returns { length: '1000' }

Я также проверил на вкладке Сеть консоли разработчика, и я вижу, что запрос POST выполняется с параметром length = "1000".

Либо я упускаю что-то очень очевидное, либо это странный глюк. Почему это происходит и как я могу получить значение длина вместо того, чтобы получить "0"?

Спасибо.

2 3

2 ответа:

Просто переименуйте select на myLength, потому что length - это ключевое слово JavaScript, которое сбивает с толку для sails.

Правка:

Извините length не является ключевым словом, но в javascript значения/объекты (например, строки, массивы) могут иметь свойство length, установленное по умолчанию.

Спасибо Феликсу Клин за исправление

"Длина" - это слово, которое выдолжны избегать при обращении к объектам . Таким образом, вы не должны пытаться получить доступ к "длине" напрямую (т. е. obj.length). Вероятно, вам следует изменить базовое имя свойства на что-то безопасное, например quantity, Как упоминалось @jaumard:

<select name="quantity"></select>

Тогда вы можете получить доступ к req.params.quantity.