Чтение данных из хранилища данных с помощью диалогового потока - PullRequest
0 голосов
/ 22 января 2020

Я делаю чат-бота, похожего на службу поддержки (Dialogflow - встроенный редактор). Я могу записать данные в хранилище данных, но у меня возникли некоторые проблемы со считыванием данных, это базовая c операция по поиску идентификатора пользователя, но код не запускается - пожалуйста, используйте код справки ниже.

const Datastore = require('@google-cloud/datastore');
const datastore = new Datastore({
  projectId: 'bot-datastore-mnddjv'
});


      function write(agent) {
        var name = agent.parameters.name;
        var sur = agent.parameters.sur;
        var uid = agent.parameters.uid;
        const taskKey = datastore.key('Key');
        const entity = {
          key: taskKey,
          data: {
            name: name,
            sur: sur,
            uid: uid
          }
        };
        return datastore.save(entity).then(() => {
          console.log(`Saved ${entity.key.name}: ${entity.data.item_name}`);
          agent.add(`Stored ${name},${sur}`); -----> That part is working

        });
      }

      function read(agent){
        const query = datastore.createQuery('Key').filter('name');

        return datastore.runQuery(query).then(() =>{
          const sortA = query.order('name');
          const sortD = query.order('name',( {descending:true})); 
          agent.add("Scores: ",sortA); ----//  This funcion is not working 
        });
      }   

  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  intentMap.set('Zapis', write);
  intentMap.set('Odczyt', read);

  agent.handleRequest(intentMap);
});

1 Ответ

0 голосов
/ 28 января 2020

Кажется, проблема в том, что вы используете filter().

Вам необходимо использовать такой оператор, как =,> et c. поэтому, если это условие выполнено, запрос будет выполнен.

Вот пример кода из документации .

const query = datastore
  .createQuery('Task')
  .filter('done', '=', false)
  .filter('priority', '>=', 4)
  .order('priority', {
    descending: true,
  });
...