Javascript nodejsapi不';得不到结果

Javascript nodejsapi不';得不到结果,javascript,node.js,Javascript,Node.js,我是Nodejs的初学者。 我正在尝试使用async/await创建api: getAllTasks: function (callback) { return db.query("Select * from tasks", callback); }, function asyncGetAllTask(){ return new Promise((resolve,reject)=>{ resolve (Task.getAllTasks()); })

我是Nodejs的初学者。 我正在尝试使用async/await创建api:

getAllTasks: function (callback) {
    return db.query("Select * from tasks", callback);
},

function asyncGetAllTask(){
    return new Promise((resolve,reject)=>{
        resolve (Task.getAllTasks());
    })
}

router.get('/:id?',  async function (req, res) {
    if(req.params.id){
        await asyncGetTaskByID(req)

        .catch(err=>{
            res.send(400, {status:400, message: 'bad request', type:'client errors'});
        })
        .then(rows=>{
            res.json(rows)
        })
    }
    else {
        await asyncGetAllTask()
        .catch(err=>{
            res.json(err);
        })
        .then(rows=>{
            res.json(rows);
        })
    }
});
我试图从数据库中获取所有“任务”(我使用的是mysql)。但是,我不获取任务行。相反,当我使用postman的get方法时,我得到了以下结果:

{
    "domain": null,
    "_events": {},
    "_eventsCount": 0,
    "_callSite": {},
    "_ended": false,
    "_idleNext": null,
    "_idlePrev": null,
    "_idleStart": null,
    "_idleTimeout": -1,
    "_repeat": null,
    "sql": "Select * from tasks",
    "typeCast": true,
    "nestTables": false,
    "_resultSet": null,
    "_results": [],
    "_fields": [],
    "_index": 0,
    "_loadError": null
}
我错过什么了吗?我不明白为什么我得到了错误的结果。 对不起我的英语。
谢谢

wait
关键字与promise接口和处理程序(即
.catch()
.then()
)组合在这里看起来是正确的

如果您想使用
wait
,您应该按照以下思路重新构造代码(注意使用
try
catch
,以实现错误处理所需的类似catch的行为):

此外,您可能需要将方法
asyncGetAllTask()
更新为以下内容:

function asyncGetAllTask(){

    return new Promise((resolve,reject)=>{
        // The resolve callback should probably be passed to getAllTasks 
        // as per your defintion of Task.getAllTasks
        Task.getAllTasks((error, rows) => {
            if(error) { 
                reject(error); 
            } else { 
                resolve(rows); 
            }
        }); 
    })
}

您的
getAllTasks()
希望向其传递回调,但在调用
Task.getAllTasks()
时却没有传递回调。那是行不通的。用承诺来包装它根本没有帮助。而且,您只能在承诺上使用
wait
,这样您等待的东西必须是承诺,否则它不会等待任何东西。谢谢您,但我仍然会得到上面相同的结果,而不是这个:[{“taskid”:1,“taskname”:“task a”,“dateCreated”:“2018-07-10T17:00:00.000Z”,“description”:“description a”},{“taskid”:2,“taskname”:“task b”,“dateCreated”:“2018-07-10T17:00:00.000Z”,“description”:“description b”},请参阅我的更新以及
asyncGetAllTask()
-这有帮助吗?
function asyncGetAllTask(){

    return new Promise((resolve,reject)=>{
        // The resolve callback should probably be passed to getAllTasks 
        // as per your defintion of Task.getAllTasks
        Task.getAllTasks((error, rows) => {
            if(error) { 
                reject(error); 
            } else { 
                resolve(rows); 
            }
        }); 
    })
}