使用MongoDB Stitch构建一个REST 亚博贵宾会贴吧API

安德鲁•摩根

#技术 #云 #针 # JavaScript

MongoDB Stitch的一大优点是,它通常不需要构建R亚博贵宾会贴吧EST api来从前端应用程序授权访问您的数据——只需使用即可针QueryAnywhere从你的前端代码进亚博贵宾会贴吧行MongoDB查询。但是,通常情况下,您需要将一些数据开放给其他不使用针SDK-幸运的是,Stitch使为这些场合构建REST api变得非常容易。

我喜欢通过登录Swarm/FourSquare来跟踪我的位置,但我想从这些数据中获得一些额外的价值——这意味着把它放到MongoDB集合中。亚博贵宾会贴吧

FourSquare提供了一个IFTTT服务只要你签入它就会触发,通过链接到制造商服务发送HTTP帖子请求时,我可以将签入数据转发给Stitch。这就是Stitch登场的地方;一个简单的Stitch HTTP服务webhook接收它帖子请求并写入数据到MongoDB:亚博贵宾会贴吧

export = function(payload) {var queryag = payload.query.arg || ";Var body = {};if (payload.body) {body = json .parse(payload.body.text());} var owner_id = context.函数。执行(“ownerFromEmail”,body.email);Var checkin = {owner_id: owner_id。owner_id、电子邮件:身体。电子邮件、venueName:身体。地点,日期:身体。签入Date, url: body.url, locationImg: body.location + "&key=" + context.values.get("GoogleMapsStaticKey") }; return context.functions.execute("checkin", checkin); };

webhook使用签入功能:

Exports = function(checkin){var atlas = context.services.get("m亚博贵宾会贴吧ongodb-atlas");var checkinColl = atlas.db("trackme").collection("checkins");尝试{checkinColl.insertOne(登记);} catch (e) {console.log("错误插入checkin文档:" + e);返回e.message ();}};

注意,在配置HTTP服务时,我设置了请求者必须包含的API键秘密查询参数:

安全缝合网钩与秘密

IFTTT FourSquare applet

现在数据在MongoDB中,我可以用它做什么就没亚博贵宾会贴吧有限制了。例如,我想要一个显示签到数据的仪表板,我想要包含的一件事是一张我最频繁签到的图表:

Foursquare签到grapsh

为了实现它,我编写了一个新的Stitch函数:

Exports = function(limit){var atlas = context.services.get("m亚博贵宾会贴吧ongodb-atlas");var checkinColl = atlas.db("trackme").collection("checkins");var checkins = checkinColl。聚合([{$match: {owner_id: context.user.])id}},{$组:{_id:“venueName美元”,数:{$金额:1}}},{$排序:{数:1}},{$限制:限制},{$项目:{地点:“_id美元”,_id: 0,数:1}}]).toArray ();返回签到;};

从前端应用程序,它接受一个方法调用来检索数据:

this.props. stitchclient . executefunction ('popularCheckins', 10) .then(checkinData => {this. checkinData =>;设置状态({签到:checkinData});this.createBarChart ();}, error => {console.log("未能获取最流行的签入:" + error)})

您可以重新创建这个Stitch和前端应用程序为您自己从GitHub下载应用程序导入到Stitch中

创建你的第一个Stitch应用?从其中一个开始针教程

想了解更多关于MongoDB Stitch?亚博贵宾会贴吧读了白皮书