【问题标题】:Datastore Query filters accumulating on subsequent calls数据存储区查询过滤器在后续调用中累积
【发布时间】: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


    【解决方案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));
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多