node.jsに監査証跡を持つRethinkdbデータベースを作成しようとしています。更新/挿入時のフィールドタイムスタンプとステータスを持つRethinkdb監査証跡
私のテーブルには、次のフィールドが含まれています
注文-ID数価格ステータスのタイムスタンプ
私は例として、以下のデータをアップロードするファイルを持っている:
オーダーIDを......数量.....価格
1 .................... '1000' ........ ..100
2 .................... '500' ............ 100
3 ..... ............... '1575' .......... 100
空のテーブルにアップロードすると、これらのすべての行が時間とともに挿入されます&の日付とステータスが「アクティブ」に設定されています。
のは、私は、例えば更新されたデータ(変更されたため、ID 1の量)、再びファイルをアップロードすると仮定しましょう:
注文-ID ......数量.....価格
1 .................... '' .......... 100
2 ... ................. '500' ............ 100
3 ............ ........ '1575' .......... 100
Rethinkdbクエリは、order-ID 1の行のステータスを '置き換え'に設定し、タイムスタンプを更新する必要があります。次に、更新されたデータを含む新しい行を挿入し、ステータスを「アクティブ」に設定し、タイムスタンプする必要があります。
ので、新しい更新されたデータと私のテーブルには、次のようになります。
注文-ID ......数量.....価格.....状態を...... .......タイムスタンプ
1 .................... '1000' .......... 100 .. .... 'が置き換えられ..... .....' 12:03 AM 4/22/2016 '
1 ....................' 1010 ' .......... 100 ....... 'アクティブ' ........ '12:03 AM 4/22/2016'
2 ...... .............. '500' ............ 1 00 ...... ......「アクティブ」.........「12:00 AM 4/22/2016」
3 ................ .... '1575' .......... 100 ... 'アクティブ' ......... '12:00 AM 4/22/2016'
今ではいつ、いつ、どのように変更/挿入されたのかを見るための監査証跡があります。
これはnode.jsのrethinkdbで可能ですか?
@dalanmiller
私はコードをテストしようとしたが、私が先頭に追加し、0番目を理解していません。
あなたが作成した前提の1つは、量だけが変更できることです。価格が変わることがある場合や、一度に価格が変わる場合はどうなりますか?時間をかけて更新することができるフィールド/列をさらに追加したい場合があります。
注文は数回変更することもできます。
データは「メッセージ」と呼ばれる変数にあります。
これは私が今のところ持っており、それが更新されないものです:
r.db('testing').table('orders').filter({Order_ID: message[ticks].Order_ID}).count().run() //count how many rows with this Order_ID
.then(function(feed){
if (JSON.stringify(feed)==1){ //check if the order_id already exist
r.db('testing').table('orders').filter({Order_ID: message[ticks].Order_ID}).update(message[ticks]).do(
function (post) {
return r.branch(post('replaced').eq(0),
false, //if nothing changes, leave it as it is
r.db('testing').table('orders').post('orders').prepend(post('orders').nth(0).merge({message[ticks].Quantity})) // <-- I don't understand how this works
)
}).run()
}
else if (JSON.stringify(feed)==0){
//new order. Insert the order
message[ticks].Timestamp = new Date(); //add timestamp
message[ticks].Status = 'Active'; // add status as 'Active'
r.db('testing').table('orders').insert(message[ticks]).run()
}
こんにちはビッグスキニー、私の答えをチェックして、それがあなたのために働くかどうかお知らせください。 – dalanmiller
こんにちは、あなたの入力と時間をありがとう。私は次の日にそれを試して、あなたに戻ってくるつもりです。 –
@dalanmiller、私が間違っていることを確認できますか? –