回送3查询未返回MySQL数据字段的预期结果

问题描述

我的内容模型如下:

{
  "name": "content","base": "PersistedModel","idInjection": true,"options": {
    "validateUpsert": true
  },"properties": {
    "id": {
      "type": "number"
    },"url": {
      "type": "string","required": false
    },"data": {
      "type": "Object","required": true
    }
  },"validations": [],"relations": {},"acls": [
    {
      "accesstype": "WRITE","principalType": "ROLE","principalId": "$authenticated","permission": "ALLOW"
    },{
      "accesstype": "READ","principalId": "$everyone","permission": "ALLOW"
    }
  ],"methods": {}

MysqL中此数据的示例如下所示:

enter image description here

我尝试使用REST和Node API来查询此数据,但无法通过“数据”数据库字段内部的任何嵌套对象字段进行查询。一些不起作用的示例:

      contentModel.findOne({ where: { "data.url": url } },function (
        err,content
      ) {
        if (err) {
          console.log(err);
        }
        console.log("find:",content);
      });
const filter = encodeURI(`{"where":{"systemid":"${contentType}"}}`);
      let url = `${apiUrl}contentTypes?filter=${filter}`;
      let contentTypeRecord = await this.getAxios().get(url);

我还在回送用户界面ui中尝试了许多查询。我通常没有结果,或者它返回了所有的内容记录。

但是,如果我在MongoDb中设置了相同的数据,则上述数据访问尝试会起作用。

我在做什么错?回送大概应该是在数据字段中解析对象,并允许我对其进行过滤。

解决方法

AFAIK,LoopBack不支持对嵌套属性的查询过滤器。根据{{​​3}},在PostgreSQL和MongoDB连接器中支持有限:

您会从线程中看到

@michelgokan:

  • this comment
  • Mongo也有一些基本支持(仅适用于点嵌套属性)
  • 由于LTS中具有环回3,并且不再接受新功能PR,因此不会将其他支持添加到其他RDB连接器中
  • Loopback 3将于2019年底结束LTS,因此添加的可能性更低。

选项是:

  • 自己编写自定义SQL作为自定义端点
  • some support in postgres connectorKnex之类的具有支持性(任务繁重)的事物创建备用连接器
  • 在内存中进行过滤
  • 将json用于嵌套数据,以便在诸如mongo或postgres之类的点中使用点查询
  • 接下来要环回,这可能会在将来增加支持

MySQL似乎支持查询JSON数据,请参见Bookshelf,因此应该可以在loopback-connector-mysql中实现此功能。随时在docs for JSON_CONTAINS中打开问题。拉取请求会更好! ❤️

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...