Чтение нескольких атрибутов в JSON с использованием node js
Я могу проверить один объект JSON, но я хочу проверить массив объектов JSON, как показано ниже, и подтвердить недействительное название города Pincode:
var RuleEngine = require("node-rules");
var R = new RuleEngine();
var fact =
[{
"name": "Person",
"website": "Udemy",
"transactionTotal": 400,
"cardType": "Credit Card",
"statuscode": 200,
"details": {
"city": "Kirochnaya ",
"pincode": 191015
}
},
{
"name": "Person2",
"website": "Udemy",
"transactionTotal": 900,
"cardType": "Credit Card",
"statuscode": 200,
"details": {
"city": "Kirochnaya ",
"pincode": 191015
}
},
{
"name": "Person3",
"website": "Udemy",
"transactionTotal": 800,
"cardType": "Credit Card",
"statuscode": 200,
"details": {
"city": "Saint Petersburg",
"pincode": 191123
}
}];
var rule = {
"condition": function (R) {
console.log(this);
R.when(this.details.city != "Kirochnaya");
},
"consequence": function (R) {
this.result = false;
this.reason = " Failed validation bcos city name is not matched";
R.stop();
}
};
R.register(rule);
R.execute(fact, function (data) {
if (data.result) {
console.log("Valid statuscode");
} else {
console.log("Blocked Reason:" + data.reason);
}
});
Ожидаемый результат для приведенного выше кода:
Неудачная проверка Название города bcos не совпадает: Санкт-Петербург 191123
1 ответ
Решение
Вы можете пройти через массив и выполнить правило для каждого факта:
var rule = {
"condition": function (R) {
console.log(this);
R.when(this.details.city != "Kirochnaya");
},
"consequence": function (R) {
this.result = false;
this.reason = " Failed validation bcos city name is not matched: " + this.details.city + " " + this.details.pincode;
R.stop();
}
};
R.register(rule);
fact.forEach(check => {
R.execute(check, function (data) {
if (data.result) {
console.log("Valid statuscode");
} else {
console.log("Blocked Reason:" + data.reason);
}
});
});