【发布时间】:2018-12-26 22:10:16
【问题描述】:
我正在制作一个 RESTFul API。我有以下端点
/users/getByState/stateId
我在数据库中有几个用户。 3 个用户来自德克萨斯州,1 个来自纽约。
当我第一次调用端点时,无论是通过
/user/getByState/tx
或通过
/user/getByState/ny
我得到一个结果,但立即使用另一个状态 ID 调用端点,返回一个空数组和消息 {"moreResults": "NO_MORE_RESULTS"}
将查询发送到控制台日志告诉我,第一次查询只有一个过滤器......让我们说
FILTER:{stateID:'tx'}
但第二次,不是将过滤器选项更改为“ny”,而是添加了另一个过滤器,所以现在我在控制台日志中看到了
FILTER:{stateId:'tx'}
FILTER:{stateId:'ny'}
这显然总是会返回一个空数组,因为它永远不会找到 stateId='tx' AND stateId='ny'
我不明白为什么云数据存储客户端要向 CONST 添加过滤器!
如果我调用端点 7 次,我会看到 7 个过滤器。只有在我重新部署过滤器“清除”
如何在再次运行查询之前清除过滤器?在云数据存储文档中对此进行了搜索,但没有关于每次调用后连接过滤器的信息
我错过了什么吗?这是我的代码:
const Datastore = require('@google-cloud/datastore');
const datastore=Datastore();
const query=datastore.createQuery("user");
exports.get_user_by_state =(req,res,next) => {
const pageCursor = req.query.cursor;
const userState=req.params.stateId;
const selectQuery = query
.filter('stateId',userState)
console.log(selectQuery);
selectQuery.run({cache:false})
.then((results) => {
res.json(results);
})
.catch(err => res.status(500).json(err));
}
【问题讨论】:
标签: node.js express google-app-engine google-cloud-datastore