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