【发布时间】:2019-10-05 15:02:13
【问题描述】:
我正在为表单的字段服务器端(expressjs)之一构建验证并为此执行以下操作:
从json文件中读取数据
从中获取属性(数组)
检查它是否包含用户生成数组的每一个元素,仅此而已,例如:
[1,2,3,4,5]; (json array)
[1,2,3,4,5,6] (user generated array) //must return false
[1,2,3,4,5];
[1,3,4] //must return true;
[1,2,3,4,5];
[1,2,7] //must return false;
所以我使用这个代码:
const contains = (arr1, arr2) => {
arr2.every(v => arr1.indexOf(v) !== -1)
}
var match;
fs.readFile('../tags.json', 'utf8', (err, data)=>{
var JsonData = JSON.parse(data);
var tagsArray = JsonData.tags;
console.log(tagsArray)
console.log(tags)
if(tagsArray instanceof Array){
console.log('tagsArray is array')
}
if(!contains(tagsArray, tags)){
match = false
}
else{
match = true
}
console.log(match + ' blah1')
});
console.log(match + ' blah2')
if(match == false){
return res.status(409).send({
message: 'Do not provide your own tags'
});
}
但它总是在fs.readFile 块内返回false,因为它在fs.readFile 块外返回未定义,所以这意味着包含函数返回未定义(我测试过)
那么这有什么线索呢? 谢谢!
【问题讨论】:
标签: javascript arrays node.js json express