Articles of 谷歌云的数据存储

如何在谷歌数据存储查询filter处理浮点?

我一直在使用Google DataStore尝试将查询从SQL数据库迁移到DataStore。 我在Node中工作,试图在一个实体上过滤。 该实体具有以下字段。 Exchange: String Threshold: Floating Point Number Pairing: String Userid: String 我可以使用Google云端平台Web视图的按类别查询function成功查询实体。 我目前的代码实现似乎没有返回我想要的正确的响应,虽然我能够作出请求,当我离开阈值filter行。 也build立了适当的指标。 const query = datastore.createQuery('notifications_info') .filter('exchange', '=', objectToRequest.exchange) .filter('threshold', '<=', 0) .filter('threshold', '>', -3) .filter('pairing', '=', objectToRequest.pairing); datastore.runQuery(query,function(error, results){ if(error){ console.log(error); } else if (results){ console.log(results); callback(error, results); } }); 对象要求 var objectToRequest = { exchange: 'gdax', time_interval: 60 […]

谷歌数据存储查询抛出多个selectApiError:Precondition节点失败的错误

我正在使用以下查询从谷歌数据存储检索一些实体: var query = datastore.createQuery(namespace,tableName); query.select(['displayName','username']); datastore.getEntitySet(query,function(err,data){ if(err){ res.status(500).end(); } else{ res.send(data); } }); 上面的代码工作正常,如果我只select一个属性即 query.select('username'); 但多select其投掷412'先决条件失败'的错误。 我的实体如下所示: 实体属性

Node.js Google云端平台数据存储date比较

我想使用gcloud.js模块在Google Datastore上运行查询: var startDate = moment('2016-03-11').format('YYYY-MM-DD'); var query = exports.dataset.createQuery('Resource') .filter('startDate', '>=', startDate); exports.dataset.runQuery(query, function(err, resources) { console.log(resources); }); 此date比较filter不工作,显示所有可能的实体。 其他filtertypes工作得很好。 我不知道我应该通过哪种格式的date。 尝试几乎所有可能的格式。 也许比较运算符的date应该是不同的?

Google数据存储中的节点分页

我在使用Google数据存储区分页时遇到问题。 我有一个没有限制的查询有几百个结果。 我想检索5,发回给用户,如果用户想要更多,他们会检索下一个5。 按照文档我创build查询: var query = datastore.createQuery('ResultsKind').filter('name', 'bobby').limit(5).autoPaginate(false); 然后我运行这个查询来得到前5个结果: datastore.runQuery(query, callback); 这是callback函数: function callback(err, entities, nextQuery, apiResponse) { if (err) { // An error occurred while running the query. console.log('err ' + err); return; } if (nextQuery) { console.log('res = ' + entities); datastore.runQuery(nextQuery, callback); } else { // No more results exist. console.log('no […]

Google云数据存储如何在本地运行?

在尝试使用Node.js和Google Cloud Datastore(针对我的应用程序的后端)时,我注意到,即使没有Datastore Emulator,我也可以使用Datastore API在本地运行和testing我的应用程序。 注意 :我没有将我的应用程序部署到云端。 更具体地说,我克隆了“nodes-getting-started”的github版本库,创build了一个config.json文件,运行npm install,最后运行了npm start。 我可以使用API​​添加和删除书籍。 这些数据在哪里存储? 我发现这很有趣,不知道它是如何工作的。 我会深表感谢任何帮助。 它正在把我的脑子吃掉。 谢谢!

如何查询云数据存储中的空数组

您可以使用Google云数据存储查询中的空数组筛选属性吗? const query = datastore.createQuery('Task') .filter('arrayValue', '=', '');

gcloud节点数据存储 – 如何在单个事务中过滤多个实体密钥?

我有我想要读取的实体的密钥列表。 我找不到一种方式来阅读他们在一个单一的交易 有没有办法做这样的事情 – var query = datastore.createQuery('Task').filter('someProp', 'in', ['val1', 'val2']) 如果有人知道根据多个键筛选特定的解决scheme,它也将为我工作。 谢谢

通过父键查询实体

我正在寻找通过父键查询数据存储实体(即,返回键是在父键下的1path段的实体)。 我知道我可以使用HAS_ANCESTOR查询来获得父级和所有的后代,但我只想要直接的孩子。 我希望有一个__parent__属性可用于此目的,但是这似乎不起作用: {propertyFilter: { property: {name: '__parent__'}, op: 'EQUAL', value: {keyValue: { partitionId: {projectId: 'myproject'}, path: [{kind: 'row', name: 'parent'}] }} } 我知道我也可以在每个实体中logging一个深度属性来达到这个目的,但是如果Datastore本身使用密钥本身支持这样的查询,那么就不会那样做。

云数据存储和Node.js:无法获取实体

我正在使用App Engine灵活的环境和Node.js,并试图在Cloud Datastore中存储和检索实体。 以下代码成功创build一个新的Event实体: /* Create event */ router.post('/', function(req, res, next) { const eventKey = datastore.key('Event'); datastore.save({ key: eventKey, data: req.body }) .then(() => { console.log('New event created'); res.json({id: eventKey.id}); }) .catch((err) => { next(err); }); }); 但是,当我提供以前返回的id时,以下返回一个空数组: /* Get an event */ router.get('/:id', function(req, res, next) { console.log(req.params.id); var eventKey = datastore.key(['Event', req.params.id]); […]

正确比较节点中的数据存储区密钥

看来@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; } 这些解决scheme似乎工作,但有一个丑陋的地方。 是否只有一个内置函数,我想念?