小程序-云开发-包含对象数组字段的多字段模糊查询

 记录:小程序云开发 实现模糊查询,对象数组,多字段模糊查询。

先看云数据库结构和要查询的对象:

代码:

wxml:

<!-- 搜索框 -->
<view class="searchbox">
    <view class="search">
        <input type="text" value="{{ search }}" placeholder="请输入关键词进行搜索" bindinput="searchtext" bindconfirm="getsearch" />
        <image bindtap="getsearch" src="/imgs/sss.png"></image>
    </view>
</view>

wxss:

.searchbox {
    display: flex;
    align-items: center;
    margin-top: 40rpx;
}

.search {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 85%;
    height: auto;
    padding: 10rpx;
    box-shadow: 0px 1px 2px #dee8f1, 0px 1px 2px #e9e2ea;
    background-color: #ffffff;
    margin: 0 auto;
}

.search input {
    font-size: 25rpx;
    padding-left: 20rpx;
    width: 80%;
    opacity: 0.4;
}

.search image {
    width: 50rpx;
    height: 50rpx;
    padding-right: 20rpx;
}

js:

Page({
    /**
     * 页面的初始数据
     */
    data: {
        search: '',
    },
    //  获取输入框值
    searchtext(e) {
        console.log('搜索关键字', e.detail.value)
        this.setData({
            search: e.detail.value,
        })
    },
    // 搜索 模糊查询 
    getsearch() {
        const that = this;
        if (that.data.search != '') {
            // 云函数 模糊查询
            wx.cloud.callFunction({
                name: "get_search",
                data: {
                    search: this.data.search,
                },
                success: (res) => {
                    console.log('111')
                    console.log(res.result)
                }
            })
        } else {
            wx.showModal({
                title: '提示',
                content: '输入不能为空喔 ^_^',
                confirmColor: '#a3a3a3',
                showCancel: false,
            })
        }
    },
})

云函数:

// 云函数入口文件
const cloud = require('wx-server-sdk')

//云开发环境初始化
cloud.init({
    env: 'yxh-lhm-4gsj4zxw81b2e7d6', //所对应的环境ID
    traceUser: true
})
// 要先初始化后再用
const db = cloud.database()
const _ = db.command

// 云函数入口函数
exports.main = async (event) => {
    return await db.collection('A_book_info')
        .where(_.or([
            {
                remark: {
                    $regex: '.*' + event.search,
                    $options: 'i',
                }
            },
            {
                'info.data.title': {
                    $regex: '.*' + event.search,
                    $options: 'i',
                }
            },
            {
                'info.data.summary': {
                    $regex: '.*' + event.search,
                    $options: 'i',
                }
            },
            {
                'info.data.author': {
                    $regex: '.*' + event.search,
                    $options: 'i',
                }
            },
            {
                'info.data.isbn': {
                    $regex: '.*' + event.search,
                    $options: 'i',
                }
            },
        ])).get() //返回给前端

}

最后云函数别忘了上传部署噢~

最后效果:

 ok~

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
小程序云开发中,你可以使用函数更新数组的每个对象并添加新字段。下面是一个实现的示例代码: ```javascript // 函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 函数入口函数 exports.main = async (event, context) => { const db = cloud.database() const collection = db.collection('mycollection') // 获取数组中的所有对象 const items = await collection.where({ // 这里根据你的需求来进行查询条件的设置 }).get().then(res => res.data) // 遍历数组,给每个对象添加新字段 const updatedItems = items.map(item => { return { ...item, newField: '新字段的值' } }) // 批量更新数据库中的数据 const res = await collection.where({ // 这里根据你的需求来进行查询条件的设置 }).update({ data: { // 使用 $each 操作符将更新的数据合并到原有数据中 items: db.command.push({ $each: updatedItems }) } }) return res } ``` 在这个示例中,我们首先使用 `collection.where()` 方法来查询数据库中的数据,并使用 `get()` 方法获取查询结果中的数组。然后,我们使用 `Array.prototype.map()` 方法来遍历数组,给每个对象添加新字段。最后,我们使用 `collection.where().update()` 方法批量更新数据库中的数据,使用 `$each` 操作符将更新的数据合并到原有数据中。 注意,在更新数据时,需要根据实际情况设置查询条件。同时,需要在小程序管理后台中设置函数的权限,以允许函数访问你的数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抄代码抄错的小牛马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值