@google-cloud/datastore
似乎没有提供比较 key 的方法,并且 key 本身不具有可比性。有没有正确的方法来比较 key ?我自己也尝试过一些:
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;
}
这些解决方案似乎有效,但放置起来有点难看。我是否缺少一个内置函数?
最佳答案
你没有错过任何东西。数据存储区没有内置的 key 比较实现。我相信这是因为它可能高度依赖于业务逻辑。
我正在使用这个实现。
/**
* 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 模块,以免到处复制/粘贴此类解决方案。
关于node.js - 正确比较 Node 中的数据存储键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45895460/