用MongoDB Stitch构建一个REST A亚博贵宾会贴吧PI

安德鲁•摩根

#技术 #云 #针 # JavaScript

关于MongoDB Stitch的一个伟大的事情是,它通常不亚博贵宾会贴吧需要构建REST api来授予从前端应用程序访问数据的权限-只需使用针QueryAnywhere从你的前端代码进亚博贵宾会贴吧行MongoDB查询。然而,在很多情况下,您需要将一些数据开放给其他不使用针SDK-幸运的是,Stitch让为这些场合构建REST api变得非常容易。

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

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

exports = function(payload) {var queryArg = payload.query.arg || ";Var body = {};if (payload.body) {body = EJSON.parse(payload.body.text());} var owner_id = context.functions.执行(“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("错误插入签入doc: " + e);返回e.message ();}};

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

安全缝webhook与秘密

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. checkdata =>;设置状态({签到:checkinData});this.createBarChart ();}, error => {console.log("Failed to fetch most popular check-in: " + error)})

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

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

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