1

@google-cloud/datastoreはキーを比較する方法を提供しておらず、キー自体は比較できません。キーを比較する適切な方法はありますか?ノード内のデータストアキーを適切に比較しています

function compare(key1, key2) { 
    return (key1.kind == key2.kind) && (key1.id == key2.id) 
} 

ただし、これは祖先または種類のみのキーでは機能しません。だから、何かもっと一般的には、これらのソリューションが動作するように見える

function compare(key1, key2) { 
    if (key1.path.length != key2.path.length) { 
     return false; 
    } 

    for (var i = 0; i < key1.path.length; i++) { 
     if (key1.path[i] != key2.path[i]) return false; 
    } 

    return true; 
} 

のように見えるかもしれませんが、ちょっと周りに敷設持って醜いです。私は行方不明の機能が組み込まれていますか?

答えて

1

あなたは何も欠けていません。データストアのキーコンパイルの実装は組み込まれていません。これはビジネスロジックによって大きく左右されるかもしれないからだと私は信じています。

私はこの実装を使用しています。

/** 
* Compare two keys on equality 
* @param {Object} key1 
* @param {Object} key2 
* @return {boolean} 
*/ 
function compareKeys (key1, key2) { 
    return key1.namespace === key2.namespace && _.isEqual(key1.path, key2.path); 
} 

更新

私は/どこでも、このようなソリューションをコピー&ペーストしないようにするために、簡単なNPMモジュールを作成しました。

https://www.npmjs.com/package/datastore-key-compare

+0

名前空間!私がキーのもう一つの重要な部分を見逃したことを指摘してくれてありがとう! – TamTamTam

+1

あなたは答えの更新に興味があるかもしれません。キーの比較のためのnpmモジュールを作成しました。 – QuestionAndAnswer

関連する問題