带环回的复杂查询

时间:2016-02-03 14:15:31

标签: javascript node.js loopbackjs strongloop

此当前代码正在运行:

  app.models.AvionPiloteAutorisation.find({
    "where": {
      "idAvion": avion.idAvion,
      "or": [{
        "dateExpiration": {
          gt: Date.now()
        }
      }, {
        "dateExpiration": null
      }],
      "dateSuppression": null
    },
    "include": {
      "relation": "pilote",
      "scope": {
        "include": {
          'piloteDisponibilite': {
            scope: {
              where: {
                "DateDebut": {
                  lt: Date.now()
                },
                "or": [{
                  "DateFin": {
                    gt: Date.now()
                  }
                }, {
                  "DateFin": null
                }]
              }
            }
          }
        }
      }
    }
  }

但是这个:

function getAuthorizePilotes(avion, distance, idSociete, callbackA) {
  var tempsVolEstime = distance / avion.vitesseCroisiere;

  app.models.AvionPiloteAutorisation.find({
    "where": {
      "idAvion": avion.idAvion,
      "or": [{
        "dateExpiration": {
          gt: Date.now()
        }
      }, {
        "dateExpiration": null
      }],
      "dateSuppression": null
    },
    "include": {
      "relation": "pilote",
      "scope": {
        "include": {
          'utilisateur',
          'piloteDisponibilite': {
            scope: {
              where: {
                "DateDebut": {
                  lt: Date.now()
                },
                "or": [{
                  "DateFin": {
                    gt: Date.now()
                  }
                }, {
                  "DateFin": null
                }]
              }
            }
          }
        }
      }
    }

失败。我试图为Pilote添加一个关系。我究竟做错了什么 ? 我怎么想添加这个当前代码的关系?

我尝试了"包含":[{...}]但没有成功。

  app.models.AvionPiloteAutorisation.find({
    "where": {
      "idAvion": avion.idAvion,
      "or": [{
        "dateExpiration": {
          gt: Date.now()
        }
      }, {
        "dateExpiration": null
      }],
      "dateSuppression": null
    },
    "include": {
      "relation": "pilote",
      "scope": {
        "include": ["utilisateur"],
        "include": {
          relation: 'piloteDisponibilite',
          scope: {
            where: {
              "DateDebut": {
                lt: Date.now()
              },
              "or": [{
                "DateFin": {
                  gt: Date.now()
                }
              }, {
                "DateFin": null
              }]
            }
          }
        }
      }
    }

不知道它是如何运作的。这不是官方文件中的线索。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,我明白了:

  app.models.AvionPiloteAutorisation.find({
    "where": {
      "idAvion": avion.idAvion,
      "or": [{
        "dateExpiration": {
          gt: Date.now()
        }
      }, {
        "dateExpiration": null
      }],
      "dateSuppression": null
    },
    "include": {
      "relation": "pilote",
      "scope": {
        "include": ["utilisateur", 'piloteDisponibilite'],
        relation: 'piloteDisponibilite',
        scope: {
          where: {
            "DateDebut": {
              lt: Date.now()
            },
            "or": [{
              "DateFin": {
                gt: Date.now()
              }
            }, {
              "DateFin": null
            }]
          }
        }
      }
    }

我们假设在include数组之外指定关系关键字的关系。