비동기 함수에 문제가 있습니다. mongob에 질의 (mongoose 사용)를하고 있는데 정보를 다시 얻으려고하면 정의되지 않은 결과가 나옵니다./내 비동기 기다리고있어 여기비동기/대기 함수가 정의되지 않음에서 생성됩니다.
function kquery() {
Krakentick.findOne(
{
iname: 'btcusd',
n: { $lt: now }
},
'mk c n',
function(err, tick) {
if (err) {
return console.log(err);
} else {
return tick;
}
}
);
}
과 기능 :
여기 (함수 내에서 중첩) DB를 내 쿼리
async function compare() {
var ktick = await kquery();
console.log(ktick);
}
compare();
이 기능
는 모두 동일한 파일에있는, 때 나는 그것에게 나를'undefined'
를 준다 그것을 달린다. 난 그냥 쿼리 기능을 실행하고
return tick
대신
console.log(tick)
을두고 때 동안, 나는 정확한 정보를 얻을 :
{ _id: 59d1199cdbbcd32a151dcf21,
mk: 'kraken',
c: 430900,
n: 1506875804217 }
내가, 내가 어딘가에 콜백 엉망 있다고 생각을하지만 난 아니에요 어디서 어떻게. 당신의 도움을 사전에
const mongo = require('mongodb');
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
const server = mongoose.connect('mongodb://localhost/cryptoCollection', {
useMongoClient: true
});
//Loading the mongoose schema:
const { Krakentick } = require('./kraken/model/krakenModel');
var now = Math.floor(new Date());
function kquery() {
Krakentick.findOne(
{
iname: 'btcusd',
n: { $lt: now }
},
'mk c n',
function(err, tick) {
if (err) {
return console.log(err);
} else {
return tick;
}
}
);
}
async function compare() {
var ktick = await kquery();
console.log(ktick);
}
compare();
감사 : 다음은 전체 파일입니다!
나는 단지 "에 읽었고 여기에 내 async/await 함수가 있습니다 :"_ 그 함수가 실제로'undefined'를 반환하기 때문에 .... Soooo .... 질문은 무엇입니까? 함수가 무언가를 반환해야한다면, 무언가를 반환하도록해야합니다. 아니면 반환 값이 아닌 로그 출력을 의미합니까? 'kQuery'를 기다릴 수는 없습니다. 아무 것도 반환하지 않습니다! 기다릴 약속이 없습니다! 'wait' 문은 즉각적인'undefined' 리턴 값을 "기다린다". 'Krakentick.findOne '앞에서'return'을 잊어 버린 것 같습니다. 함수가 약속을 되 돌리거나 도움이되지 않기를 바랍니다. –
[비동기 호출의 응답을 반환하려면 어떻게합니까?] (https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Frxstrem
안녕하세요. 내 'kquery()'함수 내부에서 틱을 반환해야하는 비동기/대기 함수에'비교 '가 기록되도록하기 위해'return tick;이 아닌가? – Ardzii