黄秀杰--Node后端优雅使用Bmob
2017-11-27 11:30
393 查看
数据库CRUD使用JS SDK
对于增删改查、连表操作,直接使用浏览器JS SDK,在bmob.js, https://www.bmob.cn/static/bmob_jssdk_quickstart.zip ,仅需加一个module.exports= Bmob导出,就可以在Node使用了,语法与小程序里写法一样优雅,比Bmob提供的npm包要好用N倍。
JS SDK的使用xmlhttprequest作ajax请求,所以node下,还要依赖xmlhttprequest npm包,将"xmlhttprequest": "^1.8.0"添加到package.json dependencies里,同样再加上"localStorage": "^1.0.3"。这样就改造完成了。
代码说话,看对比
以下是Bmob npm库
var BC = require('bmob'); BC.initialize("9a22a7cb3217e88cac2e81fe7e88c600", "025c1282712e387a62b2bcd5a970f93c"); var db = new BC.Db; db.find({ "table":"XXX", //表名 "keys":"a,b,c", //返回字段列表,多个字段用,分隔 "where":{"a":"XXXX","b":"XXXX"}, //查询条件是一个JSON object //"where":{"c":{"$ne":1}}, //条件查询 查询c字段值不为1的记录 "order":"-a,b", //排序列表,[-]字段名称,-表示降序,默认为升序 "limit":10, //limit大小,一页返回多少条记录,默认为0 "skip":2, //skip,分页offset,(page-1)*limit "count":1 //count,只返回符合条件的记录总数 },function(err,data){ //回调函数 });
注:对于表关联include操作,一直没有发现怎么处理,这是一个硬伤,npm库也2年多没有维护了。
以下是改造过的浏览器JS SDK
//app.js var Bmob = require('./bmob.js'); Bmob.initialize("9a22a7cb3217e88cac2e81fe7e88c600", "025c1282712e387a62b2bcd5a970f93c"); // bmob var Food = Bmob.Object.extend("Food"); var query = new Bmob.Query(Food); query.include('category'); query.limit(this.pageSize); query.skip(this.pageIndex * this.pageSize); query.find({ success: function(object) { console.log(object); }, error: function(object, error) { alert("query object fail"); } });
使用connect-multiparty+request.js+RESTFul上传附件
经过上面的改造,可以操作数据库,但对于附件上传,还是要自己再增强
'use strict'; var router = require('express').Router(); var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); var path = require('path'); var fs = require('fs'); var Bmob = require('../util/bmob.js'); var {appId, appSecret} = require('../util/config'); // 添加分类 router.post('/upload', multipartMiddleware, function(req, res) { console.log('uploading'); // 临时文件完整路径 var file_url = req.files.file.path; // 截取文件名 var filename = path.basename(file_url); console.log(filename) /* request 上传 */ var request = require('request'); request.post({ headers: { "X-Bmob-Application-Id": appId, "X-Bmob-REST-API-Key": appSecret }, url: 'https://api.bmob.cn/2/files/' + filename, body: fs.readFileSync(file_url) }, function optionalCallback(err, httpResponse, body) { if (err) { return console.error('upload failed:', err); } res.send(body); }); }); module.exports = router;
这里要注意,不能像传统自己服务端那样使用formData的方式上传,而是直接给body值——感谢Bmob的magic大大指点,才从坑里出来。
//formData: var formData = { // file: fs.createReadStream(file_url), //} //或者 //formData: var formData = { // file: fs.readFileSync(file_url), //}
经过以上2大改造,就可以在Node中优雅得使用Bmob了,我的灵犀外卖后端就是基于这个做出的。
源码: https://git.oschina.net/laeser/dinner-web
原文作者:黄秀杰
原文地址:黄秀杰-Node后端优雅使用Bmob-教程-小程序社区-微信小程序-微信小程序开发社区-小程序开发论坛-微信小程序联盟
相关文章推荐
- 智能厨房重构-使用Bmob后端云实现朋友圈的功能
- Bmob后端云的使用
- 智能厨房重构-使用Bmob后端云实现用户注册登录的功能。
- Android后端服务之Bmob使用
- 关于Bmob的后端云的使用---傻瓜式数据库操作
- 【swift】 使用bmob后端云进行增删改查以及上传文件的部分代码
- 使用Unity连接Bmob后端云
- 使用Django + Vue.js快速而优雅地构建前后端分离项目
- Bmob后端云的使用(1)——入门指导及实现登录注册功能
- Bmob后端云的使用(2)——云端数据库的使用
- 使用Node.js 和 MongoDB 为app搭建后端简单教程 附代码
- Bmob后端云使用步骤
- 移动开发利器-Bmob后端云使用体验
- Android 后端 Bmob的使用
- 智能厨房重构-使用Bmob后端云实现用户注册登录的功能。
- 黄秀杰教程之--Node使用小程序模板消息
- 使用node.js生成后端可以拖动的拼图验证码
- 小白入门---BMOB后端云的使用
- 使用Bmob为你的移动应用提供后端数据服务
- 使用bmob后端云中listview如何实现数据显示在第一个item