【问题标题】:Can I use Sails native query with populate?我可以将 Sails 本机查询与填充一起使用吗?
【发布时间】:2015-09-11 08:55:42
【问题描述】:

我正在使用sails-mongo 的native 方法来查询集合。我需要使用 native 来访问一些 Mongo 地理空间查询功能。

我想使用sails populate 语法来包含相关模型。

有没有办法做到这一点?

这是我现有代码的示例:

Trip.native(function(err, collection) {
    collection.find(
      {
        "locationTo": {
          "$near": {
            "$maxDistance": 80467.35439432222,
            "$geometry": {
              "type": "Point",
              "coordinates": [-117.133655, 32.720519]
            }
          }
        }
      }
    )
    .toArray(function(err, trips) {
      console.log("Trips nearby:", trips);
    });
});

这是我的 Trip 模型供参考。

var Trip = {
  attributes: {
    owner: {
      model: 'User'
    },
    title: 'string',
    addressFrom: 'string',
    locationFrom: 'json',  // geoJson
    dateTimeDepart: 'datetime',
    dateTimeArrive: 'datetime',
    dateTimeReturn: 'datetime',
    addressTo: 'string',
    locationTo: 'json',  // geoJson
    driver: {
      model: 'User'
    },
    status: {
      type: 'string',
      defaultsTo: 'PENDING'
    }  
  }
}

【问题讨论】:

    标签: mongodb sails.js populate


    【解决方案1】:

    如果您也分享 Trip 模型,将会很有帮助。如果您要填充的字段类型为“collection”(不是“array”),您应该能够很好地填充它。

    更新:好的,我把你的问题弄错了。在native 调用之后似乎没有任何直接填充的方法。就 Waterline 函数而言,调用 native 确实无能为力。我建议您在获取locationTo 后运行另一个查询(Waterline)或自己填充字段,因为您只需要填充其中两个(并且也来自同一模型)。我想不出任何一个查询就足够了。

    【讨论】:

    • @KevinBaker:我已经更新了答案。如果有帮助,请告诉我们。
    【解决方案2】:

    谢谢,我现在在两个查询中完成了它。

    首先,我通过本机查询构建了一个匹配 ID 的数组。

    var tripIdList = trips.map(function (trip) {
      return trip._id
    });
    

    其次,我使用 ID 列表进行正常查找查询。这不是一个单一的查询,但效果很好。感谢您的帮助

    Trip.find(filter)
      .where({id: tripIdList})
      .populate('driver')
      .exec(function (err, trips) {
         console.log("Trips:", trips);  
      }
    

    【讨论】:

    • 我遇到了同样的问题,但我还需要保持原生查询的排序顺序,有什么线索吗?
    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    相关资源
    最近更新 更多