Javascript Don';我们不能有承诺地工作
我尝试以下代码:Javascript Don';我们不能有承诺地工作,javascript,Javascript,我尝试以下代码: function addNewCars(req, res) { let CarsList = req.body; carListParsing(carList) .then(function () { console.log('OK'); res.status(200).send('OK'); }).catch(function (err) { res.status(200).send(er
function addNewCars(req, res) {
let CarsList = req.body;
carListParsing(carList)
.then(function () {
console.log('OK');
res.status(200).send('OK');
}).catch(function (err) {
res.status(200).send(err);
});
}
function carListParsing (data) {
return new Promise(function (resolve, reject) {
let newCar = {};
newCar.name = data.car_name;
validateCar(newCar).then(function (data) {
console.log('validate result1: ', data); //this line doesn't show
//if I get validation result, I can use next function createCat()
resolve(data);
}).catch(function (err) {
reject(err);
});
});
}
function validateCar(data) {
db.cars.findAll({where: {name: data.name}}).then(function (org) {
if (org.length < 1) {
console.log('validate1: OK'); //work
return data;
} else {
console.log('validate2: already exist'); //work
return new Error('The ' + data.name + ' car is already exist.');
}
}).catch(function (err) {
return err;
});
}
功能添加新车(请求、回复){
让CarsList=req.body;
carListParsing(carList)
.然后(函数(){
console.log('OK');
res.status(200)。发送('OK');
}).catch(函数(err){
资源状态(200)。发送(错误);
});
}
函数carListParsing(数据){
返回新承诺(功能(解决、拒绝){
让newCar={};
newCar.name=data.car\u name;
验证CAR(新车)。然后(功能(数据){
log('validate result1:',data);//此行不显示
//如果我得到验证结果,我可以使用下一个函数createCat()
解析(数据);
}).catch(函数(err){
拒绝(错误);
});
});
}
功能验证CAR(数据){
findAll({where:{name:data.name}}).then(函数(org){
如果(组织长度<1){
console.log('validate1:OK');//工作
返回数据;
}否则{
console.log('validate2:已存在');//工作
返回新错误(“+data.name+”车辆已存在。”);
}
}).catch(函数(err){
返回错误;
});
}
我需要验证数据=>汽车名称,如果汽车不存在,则创建新汽车并执行下一个逻辑,例如park Car。如果发现车辆,则执行停车功能。避免在carListParsing
中执行,并返回您的结果承诺,从验证car
function addNewCars(req, res) {
// CarsList is a typo
carListParsing(req.body)
.then(function () {
console.log('OK');
res.status(200).send('OK');
}, function (err) { // more appropriate than catch
res.status(200).send(err);
});
}
function carListParsing (data) {
let newCar = {
name: data.car_name
};
// don't call `new Promise`
return validateCar(newCar).then(function (data) {
console.log('validate result1: ', data); //this line doesn't show
// if I get validation result, I can use next function createCat()
return data; // don't resolve
});
}
function validateCar(data) {
return db.cars.findAll({where: {name: data.name}}).then(function (org) {
// ^^^^^^
if (org.length < 1) {
console.log('validate1: OK'); //work
return data;
} else {
console.log('validate2: already exist'); //work
throw new Error('The ' + data.name + ' car is already exist.');
// ^^^^^ probably what you actually wanted
}
}) // don't ignore errors
}
功能添加新车(请求、回复){
//CarsList是一个打字错误
卡里斯特帕斯(要求车身)
.然后(函数(){
console.log('OK');
res.status(200)。发送('OK');
},函数(err){//比catch更合适
资源状态(200)。发送(错误);
});
}
函数carListParsing(数据){
让新车={
名称:data.car\u name
};
//不要叫“新承诺”`
返回validateCar(新车)。然后返回(函数(数据){
log('validate result1:',data);//此行不显示
//如果我得到验证结果,我可以使用下一个函数createCat()
返回数据;//不解析
});
}
功能验证CAR(数据){
返回db.cars.findAll({where:{name:data.name}}){
// ^^^^^^
如果(组织长度<1){
console.log('validate1:OK');//工作
返回数据;
}否则{
console.log('validate2:已存在');//工作
抛出新错误(“+data.name+”汽车已存在。”);
//^^^^^^^可能是你真正想要的
}
})//不要忽略错误
}
避免在carListParsing
,并从validateCar
返回您的结果承诺
function addNewCars(req, res) {
// CarsList is a typo
carListParsing(req.body)
.then(function () {
console.log('OK');
res.status(200).send('OK');
}, function (err) { // more appropriate than catch
res.status(200).send(err);
});
}
function carListParsing (data) {
let newCar = {
name: data.car_name
};
// don't call `new Promise`
return validateCar(newCar).then(function (data) {
console.log('validate result1: ', data); //this line doesn't show
// if I get validation result, I can use next function createCat()
return data; // don't resolve
});
}
function validateCar(data) {
return db.cars.findAll({where: {name: data.name}}).then(function (org) {
// ^^^^^^
if (org.length < 1) {
console.log('validate1: OK'); //work
return data;
} else {
console.log('validate2: already exist'); //work
throw new Error('The ' + data.name + ' car is already exist.');
// ^^^^^ probably what you actually wanted
}
}) // don't ignore errors
}
功能添加新车(请求、回复){
//CarsList是一个打字错误
卡里斯特帕斯(要求车身)
.然后(函数(){
console.log('OK');
res.status(200)。发送('OK');
},函数(err){//比catch更合适
资源状态(200)。发送(错误);
});
}
函数carListParsing(数据){
让新车={
名称:data.car\u name
};
//不要叫“新承诺”`
返回validateCar(新车)。然后返回(函数(数据){
log('validate result1:',data);//此行不显示
//如果我得到验证结果,我可以使用下一个函数createCat()
返回数据;//不解析
});
}
功能验证CAR(数据){
返回db.cars.findAll({where:{name:data.name}}){
// ^^^^^^
如果(组织长度<1){
console.log('validate1:OK');//工作
返回数据;
}否则{
console.log('validate2:已存在');//工作
抛出新错误(“+data.name+”汽车已存在。”);
//^^^^^^^可能是你真正想要的
}
})//不要忽略错误
}
您忘记从validateCar
返回承诺:返回db.cars….
。您应该会看到类似于“无法访问属性”和“未定义”的错误。我无法收到任何错误。理想情况下,我只想返回二进制结果Yes或No。在这种情况下,我返回与我检查以继续使用它们相同的数据。或者返回存在car的信息。您忘记从validateCar
:返回db.cars….
返回承诺。您应该会看到类似于“无法访问属性”和“未定义”的错误。我无法收到任何错误。理想情况下,我只想返回二进制结果Yes或No。在这种情况下,我返回与我检查以继续使用它们相同的数据。或者返回汽车存在的信息。