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。在这种情况下,我返回与我检查以继续使用它们相同的数据。或者返回汽车存在的信息。