首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node js读取JSON中的多个属性

使用node js读取JSON中的多个属性
EN

Stack Overflow用户
提问于 2020-07-07 01:41:11
回答 1查看 36关注 0票数 1

我可以验证单个JSON对象,但我想验证一个JSON对象数组,如下所示,并控制无效的Pincode城市名称:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-07 01:53:57

您可以遍历数组并为每个事实执行规则:

代码语言:javascript
复制
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);
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62761565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档