Node.js 正确比较节点中的数据存储密钥
看来,Node.js 正确比较节点中的数据存储密钥,node.js,google-app-engine,google-cloud-datastore,google-cloud-platform,Node.js,Google App Engine,Google Cloud Datastore,Google Cloud Platform,看来,@googlecloud/datastore没有提供比较键的方法,键本身也不可比较。有没有比较钥匙的正确方法?我自己也刺了几刀: function compare(key1, key2) { return (key1.kind == key2.kind) && (key1.id == key2.id) } 但是,这不适用于具有祖先的键或仅具有种类的键。所以更一般的情况可能是这样的 function compare(key1, key2) { if (key
@googlecloud/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、键2){
if(key1.path.length!=key2.path.length){
返回false;
}
对于(变量i=0;i
这些解决方案似乎可行,但有点难看。我缺少的只是一个内置函数吗?你没有遗漏任何东西。数据存储的密钥比较没有内置实现。我相信这是因为它可能高度依赖于业务逻辑 我正在使用这个实现
/**
* 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模块,以避免在任何地方复制/粘贴此类解决方案
名称空间!谢谢你指出我错过了钥匙的另一个重要部分!也许你会对答案更新感兴趣。刚刚创建了一个npm模块用于密钥比较。