私はこのようなことをしようとしています:
var query = 'select max(count) from ' + series +
' where value = \'' + search + '\'';
if (db.query(query, callback) !== undefined) {
return callback;
} else {
return callback = [{
name: series,
columns: ['time', 'max'],
points: [
[0, 0]
]
}];
}
そのクエリが未定義であるか、検索された要素が influxdb に存在しないかどうかを確認しようとしています。次に、要素が存在する場合と同じようにコールバックを武装させ、if 文は機能しますが、else は空の配列を返します
db パラメータは、データベース構成の場所です。
編集:
Osukaaさん、ご回答ありがとうございます。私はあなたが提案したことを試みますが、応答がありません。変更を加えた完全な関数は次のとおりです。
var counter = function (config, callback) {
var count = 'select max(count) from ' + series + ' where value = \'' + search + '\'';
db.query(count, function (err, res) {
if(err) return err;
if(res.length == 0){
return [{
name: series,
columns: ['time', 'max'],
points: [
[0, 0]
]
}];
}else{
return res;
}
});
};
console.log に空の配列が表示されます。
編集2:
@Osukaa に感謝します。残念ながら動作しません。次のエラーが返されます。
デバッグ: ハンドラー、エラー {"msec":395.7593630000483、"エラー":"シリーズが見つかりませんでした: items.type.updated"} デバッグ: 内部、エラー エラー: シリーズが見つかりませんでした: items.type.updated
編集3:
シリーズを作成しようとすると問題が解決しました。シリーズが存在しない場合、「Error Couldn't find series [series name]」というエラーが表示されるので、エラー コードに次のコードを入れます。
db.query(qCount, function(err, res) {
if (err) {
if (err == 'Error: Couldn\'t find series: ' + name.series) {
res = newSeries;
return callback(null, res);
} else {
return callback(err);
}
} else {
if (res.length !== 0) {
return callback(null, res);
} else {
res = newSeries;
return callback(null, res);
}
}
});
エラーが「Error: Couldn\'t find series: ' + name.series」の場合、値を渡して作成します。
ありがとう。