我正在使用节点js服务器开发一个Web应用程序。我陷入了一个地方,我将从其他模块中获取一些数据。它不能很好地工作。这是代码。
Dashboard.js的开头,我写了这个。
var auth = require('./auth');
Dashboard.js API
.get('/getAllResturants', async function (req, res, next) {
console.log('LOCATION A 001');
var testValue = await auth.testCalling(2);
console.log('LOCATION A 002');
console.log(testValue);
console.log('LOCATION A 003');
global.restaurant.findAll().then(restaurant => {
console.log('LOCATION A 004');
res.json(restaurant);
});
})
auth.js文件
module.exports = {
testCalling: async function (id) {
console.log('LOCATION B 001');
global.restaurant.findOne({
where: { id: id }
}).then(function (record) {
console.log('LOCATION B 002');
return record;
});
},
};
只是 testValue 没有任何价值。 (我需要的是从它获取一个值并根据值进一步处理。)testValue在日志中显示为 undefined 。同样在执行时,日志显示如下。我使用异步,等待程序,似乎它没有正常工作。
LOCATION A 001
LOCATION B 001
LOCATION A 002
undefined
LOCATION A 003
LOCATION B 002
LOCATION A 004
请指点我在这个程序中找到问题。
答案 0 :(得分:1)
我猜你不是在想async/await function。等待必须是一个承诺。我举个例子。
const sleep = time => new Promise(resolve => {
setTimeout(() => resolve(true), time)
});
async function run(time) {
console.log('---start---');
const bool = await sleep(time);
console.log(`---end ${bool}---`);
}
run(3000);
答案 1 :(得分:0)
您需要从http://your-site.com/yourpath
电话中退回承诺:
findOne
如果没有module.exports = {
testCalling: async function (id) {
console.log('LOCATION B 001');
return global.restaurant.findOne({
where: { id: id }
}).then(function (record) {
console.log('LOCATION B 002');
return record;
});
},
};
,该函数将回退到return
的默认返回值。