【问题标题】:How to use MongoDB in sails instead of waterline如何在风帆而不是水线中使用 MongoDB
【发布时间】:2015-06-20 09:42:27
【问题描述】:

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

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

如何使用MongoDB代替水线?

【问题讨论】:

    标签: node.js mongodb mongoose sails.js waterline


    【解决方案1】:

    如果你想使用 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 查询:

    在 UserControllr.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
          })
        }
      })
    
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      相关资源
      最近更新 更多