小程序开发
您的当前位置: 知途小程序 -> 微信公开课

开发 | 类似淘宝的搜索及购物车功能,如何在小程序中实现?

发布时间:2017/11/28   编辑:知途网络  


今天,我们依然将以「北江纺织牛仔新时尚」为例,复盘订单收集类小程序的主要功能点是如何通过知晓云(cloud.minapp.com)实现的,主要涉及搜索和购物车这 2 个功能。

搜索功能

在「北江纺织牛仔新时尚」中,搜索是比较基础的功能,其实它就是一个查询数据的过程。

我们从一个搜索的实例去讲一下这个问题,假如我们是一个消费者,想要搜索一个裤型修身的、水洗颜色浅色的、成分全棉的童装牛仔长裤,那么我们应该怎么做这个查询呢?

看上去有点复杂,那么我们先简化一下,如何搜索童装牛仔长裤的信息?

首先,我们需要有这样一张数据表,存储了商品的信息,也就是上一篇中我们讲过的 product 表。

由于我们要搜索童装牛仔长裤,那么除了一个商品的其他基本信息外,我们肯定要为童装牛仔长裤设定一个字段用于我们的查询,我们把这个字段定义为 category_id

根据实际的业务场景,一个产品可能会属于很多不同的分类,所以我们把 category_id 设定为数组类型。

现在我们的数据表定义已经初步完成了,那么假设 product 的 table_id 是 2, 童装的 category_id 是 3,牛仔长裤的 category_id 是 5,那么在小程序端,参考知晓云开发文档,去获取所有童装牛仔长裤。

关注「知晓程序」微信公众号,回复「知晓云」,获取知晓云开发文档。

const TABLE_ID_PRODUCT = ‘2’
const KIDS_CLOTH_CATEGORY_ID = ‘3’
const JEANS_CLOTH_CATEGORY_ID = ‘5’

let Product = new wx.BaaS.TableObject(TABLE_ID_PRODUCT)
let query = new wx.BaaS.Query()

// 设置类别为童装牛仔长裤
query.in(‘category_id’, [KIDS_CLOTH_CATEGORY_ID, JEANS_CLOTH_CATEGORY_ID])

Product.setQuery(query).find().then( (res) => {
  // 获取商品成功
}, (err) => {
  // 获取商品失败,需做错误处理
})

好的,现在搜索童装牛仔长裤的问题解决。

回到之前那个更复杂的问题,搜索一个裤型修身的、水洗颜色浅色的、成分全棉的童装牛仔长裤,其实就是往数据表上分别加上裤型、水洗颜色、成分的相关字段,然后在小程序端使用组合查询去把这些查询条件合并起来。

那么我们现在尝试查询所有水洗颜色浅色的童装牛仔长裤:

const TABLE_ID_PRODUCT = '2'
const KIDS_CLOTH_CATEGORY_ID = '3'
const JEANS_CLOTH_CATEGORY_ID = '5'

let targetColor = '浅'
let Product = new wx.BaaS.TableObject(TABLE_ID_PRODUCT)
let query1 = new wx.BaaS.Query()
let query2 = new wx.BaaS.Query()

// 设置类别为童装牛仔长裤
query1.in('category_id', [KIDS_CLOTH_CATEGORY_ID, JEANS_CLOTH_CATEGORY_ID])
query2.compare('color', '=', targetColor)

// 使用组合查询 and
let andQuery = wx.BaaS.Query.and(query1, query2)

Product.setQuery(andQuery).find().then( (res) => {
  // 获取商品成功
}, (err) => {
  // 获取商品失败,需做错误处理
})

上面讲了根据筛选条件进行查询,那么做到搜索功能呢?

比如我输入「童装」,点击搜索,然后小程序就返回所有童装的商品列表。

这里有一种比较简单的做法是:给商品表定义一个 keyword 数组类型字段用于这种查询,在用户点击搜索后,把用户输入的「童装」作为查询条件添加到查询中,那么我们就会得到一个搜索结果列表。

数据查询到这里基本就展示完成了,关键在于:如何结合你的业务需求去一步步完善你的数据表的设计,然后才是使用合适的查询条件去获取数据。

对于新手来说,设计出既能满足业务需求又简单优雅的数据表可能是一大挑战,这个就要靠不断实践和经验去完成了。

可以加入知晓云开发交流群跟我交流沟通 👇

购物车

在「北江纺织牛仔新时尚」进入商品详情页,我们可以选择把商品添加到自己到购物车中。

点击购物车,我们就会跳转到购物车页,可以选择下单,那么这个购物车功能是怎么实现的呢?

首先,需要说明,在「北江纺织牛仔新时尚」为购物过程中的信息存储添加了如下几个数据表:

  • product_sku, 存储了某个商品的相应副产品(面料,挂卡);
  • order_item,存储了添加购物车中 product_sku 数量的信息;
  • order,存储了某个订单中的 order_item 列表,购物快照,地址等信息;

在商品详情页中,我们根据页面的商品 id,可以在之前提到的 product 表获取它的信息用于展示,在表 product_sku 中查询它的相关副产品(面料,挂卡),在 order_item 表中查询用户之前的购物车信息。

这些都是我们用于生成购物车内容的基础信息,在用户选择产品的数量并点击添加到购物车之后,我们会向 order_item 新增或者更新相应的数据项,这些数据项其实就代表着最新的购物车信息。

点击商品详情页中的购物车图标,会直接跳转到购物车页,用户可以在这里选择和修改 order_item 的相关信息,在这个过程中,如果修改 order_item 的相关信息,需要发送更新请求去更新数据库中的信息。

点击「下单」时,我们将会根据本次被选择的最新 order_item 的数据项和之前用户登记留下的个人信息等信息生成一条 order 记录,这条记录就可以用于北江纺织与用户的联系沟通,去完成他们的线下订单。

好了,购物车功能的实现思路基本上就是如此,可能没有搜索功能讲的那么详细,但是关键点仍然是在搜索功能中所说的,如何根据业务需求去设计合适的数据表和表结构,完成相应业务,这个需要不断的实践和累积经验去完善了。

关注知途
扫一扫 关注我们
© 赞晨科技 (2018旗下品牌) 厦门知途网络科技有限公司 联系电话:0592-3553581 版权所有 闽ICP备14013465号-1  网站地图
>><<
厦门知途网络科技有限公司
知途二维码
QQ咨询
免费通话 免费通话