前言:客户端与服务器相连接方式主要有两种,第一种是containers中写,将所有数据获取,做类似缓存的处理,在一定条件下触发方法执行,第二种是action文件夹中写,通过action(实时操作)触发。
1.初始化获取所有快递订单,在client/modules/orderControl/containers/index.js文件中。
调用getGuestOrders方法具体为:
_Meteor.call('GuestOrder.methods.expressOrders', { condition, sort: _sort }, (err, data) => {})
condition为筛选订单的条件,sort是排序(methods.expressOrders,在快递订单中查找符合条件的订单)
GuestOrder.methods.expressOrders接口服务端的方法在server/methods/GuestOrder.js文件中,在server端查找方法:
image.png
(2)return expressOrders({ condition, sort }); 通过查看知道这只是中间的方法名连接,
import expressOrders from './guestOrder/web';
image.png
Objece.assign()方法是es6的内容,详细可看http://es6.ruanyifeng.com/#docs/object(第9章,对象的扩展
的第五点),里面将用法和作用讲得十分清晰。
db.GuestOrder是连接数据库,find是查找符合条件的数据。
(3)web.js中的方法需要在core/db中注入或者在core/index中注入才能顺利使用db.GuestOrder的方法,GuestOrder必须在db文件中存在,可以发现在db中有注入该方法的文件,顺着文件找到如下图。
image.png
(4)在这个页面中的方法真正的连接到数据库进行查询,如下图。collection是数据库的方法,连接数据库的表格。所有的数据库表结构都要在lib/index.js中导出。
image.png
(5)在web.js中的方法会对数据库内容做处理以及合并等措施,最终return数据,再通过一步步的方法返回给客户端。
2.订单管理---已付款---备货接口,在client/modules/orderControl/action/index.js文件中调用stockUp方法,
stockUp: ({ _Meteor, LocalState }, { stockUpData }, callback) => {
_Meteor.call('BoxInfo.methods.purchaseStockUp', { stockUpData }, (stockUpError, stockUpResult)
=> {
callback(stockUpError, stockUpResult);
});
},
image.png
(2)传入的参数stockUpData(对象),分别是goods(数组,每件商品具体的信息),_id,该订单的id。
(3)在调用之前需要在client/modules/orderControl/containers/index.js文件注入action中所有的方法
image.png
(4)同样需要在client/main.js中引入action的内容,执行以下三个步骤
import orderControlModule from './modules/orderControl';
...orderControlModule.reducer,
app.loadModule(orderControlModule);
(5)和之前查找方法一样找到BoxInfo.methods.purchaseStockUp,定位到server/methods/boxInfo/web.js文件,如下图,绿色箭头标注的方法是自定义的,并不是db自带的,文件在server/methods/core/common.js
MongoDB通用方法参考链接: http://blog.csdn.net/jession_lin/article/details/60581254
server/methods/core/common.js中的文件, Object.keys()同样是es6的语法http://es6.ruanyifeng.com/#docs/object
image.png
网友评论