首页 > 解决方案 > 从单个搜索框查询 Google AppMaker 中的多个数据源

问题描述

我正在尝试从同一个文本框中查询 2 个数据源,如何更新我的服务器端查询脚本?

我已经修改了现有的 Google 的供应商评级 AppMaker 模板,并对其进行了自定义以供我们内部使用。

在应用程序中,我添加了一个新的数据源 - 与联系人数据源具有多对多关系的类别。

https://imgur.com/MWKN5Zd

如果我正在寻找 SearchText 与联系人数据源中的字段匹配的内容,则在联系人页面的标题中,搜索栏确实有效。

我成功地将 Category 的 Dropdown 链接到新的查询参数 SearchCategory。

https://imgur.com/f7mGeiT

https://imgur.com/90dRgEp

我不知道如何让 SearchText 也查询 Category 数据源以查看它是否与现有 Category 匹配,如果匹配,也返回这些联系人。

我在下面包含了我修改后的 getContacts_ 函数的副本。

function getContacts_(query) {
  if (query.parameters.SearchCategory === null) {
    query.where = '(FirstName contains? :SearchText or CellPhone contains? ' +
     ':SearchText or Email contains? :SearchText or CompanyName contains? :SearchText or Website contains? :SearchText or LastName contains? :SearchText or OfficePhone contains? :SearchText)';
    return query.run();    
  } else {
    var contacts = []; // blank array   

    var newQuery = app.models.Contact.newQuery({sorting: query.valueOf().sorting});

     newQuery.where = '(FirstName contains? :SearchText or CellPhone contains? ' +
      ':SearchText or Email contains? :SearchText or CompanyName contains? :SearchText or Website contains? :SearchText or LastName contains? :SearchText or OfficePhone contains? :SearchText)';
    newQuery.parameters.SearchText = query.parameters.SearchText;
    newQuery.parameters.View = query.parameters.View;

    contacts = newQuery.run();

     if (query.parameters.SearchCategory !== null) {  //Strictly enforced, returns TRUE - Category is not NULL

     var category = app.models.Category.getRecord(query.parameters.SearchCategory);

     var categoryContacts = category.Contact.map(function(c) { 
        return c._key; });
     contacts = contacts.filter(function(c) {
        return categoryContacts.indexOf(c._key) > -1;
      });
    }

    var contactsArray = [];

for (var k = 0; k < contacts.length; k++) {
        contactsArray.push(contacts[k]);
}
    var result = contactsArray;

    // Apply paging params
    return result.slice(query.offset, query.offset + query.limit);
  }
}

我希望能够使用搜索栏返回 SearchText 与类别名称匹配的联系人。IE。“零售”

任何意见是极大的赞赏!

标签: google-app-maker

解决方案


推荐阅读