如何在风帆中使用 MongoDB 而不是吃水线

How to use MongoDB in sails instead of waterline

我有一个大约有 600000 条记录的数据库。
我正在使用 sails.js 但是 当我使用水线方法获取数据时,获取 600000 条记录(大约 17 秒)需要很长时间,并且查询有限,即它没有访问连接表。所以我加入了两个查询的结果,然后过滤了它需要很多时间的数据。

所以我决定使用 MongoDB 和帆而不是水线,我想知道我是否可以在不链接到水线模型的情况下以某种方式使用蓝图 API。

How to use the MongoDB instead of the waterline?

如果您想使用 Sails 模型api,您可以覆盖控制器中的蓝图方法。

因此,要覆盖 User 模型,请在 UserController.js 中创建以下函数:

find, create, update, destroy

find 将覆盖 'get api/v1/user'

create 将覆盖 'post api/v1/user'

update 将覆盖 'put api/v1/user'

destroy 将覆盖 'delete api/v1/user'

进入控制器后,您可以 运行 在 Mongo 上进行 native 查询,如下所示:

在UserControllelr.js

find: function (req, res) {

  var packet = req.params.all();
  // packet now has all url and posted parameters
  User.native(function (err, UserCollection) {
    if(err) {
      //handle error
    }
    else {
      // here you can run any native mongo Query using UserCollection
      // eg:
      UserCollection.aggregate(
        {"$match": {"gender": "Male"} },
        {"$group": { "_id": "$socialNetwork", "count": {"$sum":1} } },
        function (err, results) {
          //do stuff with results
      })
    }
  })

}

希望这对您有所帮助。