【发布时间】:2015-12-03 10:03:43
【问题描述】:
我编写了一个验证函数,我想检查一个数组是否可以插入。我想返回多个错误。 我搜索了该主题,但无法通过承诺异步模块运行它。 我对 NodeJS 很陌生,如果您能帮助我,我将不胜感激。
function validateNewResultUnits(sets, req) {
var validate = [];
sets.forEach(function(setItem) {
setItem.forEach(function(item) {
if (item.hasOwnProperty("name") == false) {
validate.push({
'name': 'Name has to be set'
});
} else {
if (item.name === "" || item.name === null || item.name === undefined) {
validate.push({
'name': 'Name cannot be empty'
});
} else {
Exercise.forge({
name: req.body.name
}).fetch({
withRelated: [{
'resultUnits': function(qb) {
qb.where('name', item.name);
}
}]
}).then(function(exercise) {
console.log("Länge:" + exercise.related('resultUnits').length);
if (exercise.related('resultUnits').length === 0)
validate.push({
'name': 'ResultUnit not found'
});
}).catch(function(error) {
validate.push({
'name': 'An Error occured'
});
});
}
}
if (item.hasOwnProperty("value") == false) {
validate.push({
'value': 'Value has to be set'
});
} else {
if (item.value === "" || item.value === null || item.value === undefined) {
validate.push({
'value': 'Name cannot be empty'
});
} else {
if (isNaN(item.value)) validate.push({
'value': 'Value has to be number'
});
}
}
});
});
return validate;
}
var validate = validateNewResultUnits(req.body.sets, req);
console.log(validate);
if (validate.length == 0) {
// ...
}
console.log(validate); 在函数准备好返回之前返回 undefined。
非常感谢。
编辑: Promise Attempt(在第二个 forEach 内)
var promise = new Promise(function(resolve) {
Exercise.forge({name: req.body.name })
.fetch({
withRelated: [{'resultUnits': function(qb) {
qb.where('name',item.name)
}}]
}).then(function(exercise) {
console.log("Länge:"+exercise.related('resultUnits').length);
if (exercise.related('resultUnits').length === 0)
resolve({'name':'ResultUnit not found'});
}).catch(function(error) { resolve({'name': 'An Error occured'}); });
});
promise.then(function(result) {
validate.push(result);
});
【问题讨论】:
标签: javascript node.js