私は学校のウェブサイトを運営するためにCMSシステムに関する学校プロジェクトを行っています。私は挿入すると/毎日自動実行機能
- のMongoDB(ヘッドデータベース、店舗すべての情報)
- のRedis(ウェブサイトのメニューを保存)
- Elasticsearch(ストアポスト)現在
:それは3データベースを使用しますデータの編集/削除、関連するデータベースへの挿入/編集/削除も行います。しかし、私の指導者は、特定の時間に3つのデータベース間でデータを自動的に同期させる機能(ユーザーがいつでも選択できる)を作成したいと考えています。
私のサーバはNode JSを使用して動作しますが、この要件は私には新しく、これまで聞いたことはありません。私の新しいアプローチがある:
- が== trueフラグを含むすべての行を選択し、データベースのフィールド
- に1つのフラグを追加します。
- 同期データ
しかし、私は特定の時間に自動機能上の実行をする方法がわかりません。皆さんが私の新しい流れを最適化し、同期の問題を解決するのを助けてくれることを願っています。
ありがとうございました!
編集1:タイトルを変更します。
編集2:このトピックの解決策を見つけました:Running a function everyday midnight、データを同期するときにエラーが発生した場合は、この機能を再実行する必要があります。このような何か:
function syncDataAtMidNight(){
var now = new Date();
var night = new Date(
now.getFullYear(),
now.getMonth(),
now.getDate() + 1, // the next day, ...
0, 0, 0 // ...at 00:00:00 hours
);
var msToMidnight = night.getTime() - now.getTime();
setTimeout(function() {
// is this a correct way to loop, in case of error when sync ???
myFunctionSync(err, resp) {
if(err){
myFunctionSync();
} else {
changeFlagToFalse();
syncDataAtMidNight();
}
}
}, msToMidnight);}
node.jsプログラム内では、 'setTimeout()'を使って何かのmsを実行させることができます。現在の時間を取得し、関数を実行するまでの時間をmsで計算し、 'setTimeout()'呼び出しを発行してスケジュールします。この質問が、将来、ある時点で関数を実行しているだけの場合は、質問のタイトルと本文を変更してください。 – jfriend00
@ jfriend00ありがとう、私は編集して、この新しいソリューションを追加します。もう一度チェックしてもらえますか? – Huy
umm、ここでの質問の仕方は、元の意図を明確にすることができますが、新しい質問に質問を変更すべきではありません。エラーがあれば、関数をもう一度実行することについて何か新しいことを今求めているようです。それはあなたが最初に尋ねたものとはまったく異なります。あなたが求めているものの要点を変え続ければ、人々はあなたの質問に時間を費やすことを避けるでしょう。参考までに、myFunctionSync()への最初の呼び出しの構文は、関数を呼び出すための正当なJavascriptではありません。あなたが 'myFunctionSync()'コードを表示しないので、あなたが何をしようとしているのか分かりません。 – jfriend00