#node.js
#node.js
Вопрос:
Вот мой сценарий: я анализирую веб-страницу с помощью javascript, а затем отправляю результат в RestAPI для сохранения json в БД. Код работает нормально, пока все поля, которые я определил в моем скрипте, отправляются. Проблема в том, что со временем их веб-сайт может изменить имена полей, и это приведет к сбою моего кода. Первоначально я использовал такой код
const mySchool = new mls.School();
mySchool.highSchoolDistrict = data["HIGH SCHOOL DISTRICT"].trim();
mySchool.elementary = data.ELEMENTARY.trim();
mySchool.elementaryOther = data["ELEMENTARY OTHER"].trim();
mySchool.middleJrHigh = data["MIDDLE/JR HIGH"].trim();
mySchool.middleJrHighOther = data["MIDDLE/JR HIGH OTHER"].trim();
mySchool.highSchool = data["HIGH SCHOOL"].trim();
mySchool.highSchoolOther = data["HIGH SCHOOL OTHER"].trim();
newListing.school = mySchool;
но когда элемент не существует, он жалуется на то, что он не может использовать обрезку неопределенного. Итак, чтобы исправить это, я придумал это
if (data["PATIO/PORCH"]) {
newExterior.patioPorch = data["PATIO/PORCH"].trim();
}
это работает, но мне интересно, существует ли более глобальный подход, чем идти и проверять каждое поле, если оно определено?
Ответ №1:
Вы могли бы использовать своего рода вспомогательную функцию, чтобы сначала проверить, есть ли элемент undefined
, а если нет, вернуть trim()
отредактированную версию строки.
var data = Array();
data["HIGH SCHOOL DISTRICT"] = " 123 ";
function trimString(inputStr) {
return (inputStr != undefined amp;amp; typeof inputStr == "string") ? inputStr.trim() : undefined;
}
console.log(trimString(data["HIGH SCHOOL DISTRICT"]));
console.log(trimString(data["ELEMENTARY OTHER"]));