我正在制作RESTFul API。我有以下端点
/users/getByState/stateId
我在数据库中有几个用户。 3位用户来自德克萨斯州,一位来自纽约。
当我第一次呼叫端点时,可以通过
/user/getByState/tx
或通过
/user/getByState/ny
我得到一个结果,但是立即使用另一个状态ID调用端点,返回一个空数组和消息{“ moreResults”:“ NO_MORE_RESULTS”}
将查询发送到控制台日志表明,第一次查询仅具有一个过滤器..可以说
FILTER:{stateID:'tx'}
但是第二次,不是将filter选项更改为“ ny”,而是添加了另一个过滤器,因此现在在控制台日志中我看到了
FILTER:{stateId:'tx'}
FILTER:{stateId:'ny'}
显然它将始终返回一个空数组,因为它将永远找不到stateId ='tx'和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));
}
答案 0 :(得分:1)
每个查询都需要一个新的查询对象。因此,应在块内部创建查询对象。
const Datastore = require('@google-cloud/datastore');
const datastore = Datastore();
exports.get_user_by_state =(req,res,next) => {
const pageCursor = req.query.cursor;
const query = datastore.createQuery("user");
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));
}