非同期関数に問題があります。私はmongodbに(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;
}
}
);
}
、ここでは私の非同期は/機能を待っています:
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();
ありがとう: ここでは完全なファイルです!参考までpromesified kquery機能を掲示
function kquery() {
return Krakentick.findOne(
{
iname: 'btcusd',
n: { $lt: now }
},
'mk c n',
function(err, tick) {
if (err) {
return console.log(err);
} else {
return tick;
}
}
);
}
私は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()'関数の中で、ダンプを返すことになっていた関数の中で、非同期/待機関数 'compare'を使ってログに記録しますか? – Ardzii