国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信聊天小程序——(三、獲取好友列表)

這篇具有很好參考價(jià)值的文章主要介紹了微信聊天小程序——(三、獲取好友列表)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

三、獲取好友列表

步驟一、展示所有好友的推薦列表(friends頁(yè)面)

具體效果:
微信聊天小程序——(三、獲取好友列表)

實(shí)現(xiàn)思路:

  • 我們有我們的用戶數(shù)據(jù)庫(kù)表即:uers
  • 循環(huán)我們的數(shù)據(jù)庫(kù)用戶表,達(dá)到所有的用戶信息,即:userList
  • 利用云函數(shù)拿到我們的userList,賦值給data,之后再頁(yè)面中顯示出來(lái)
  • 顯示的時(shí)候,注意用 onLoad調(diào)用,因?yàn)槊看雾?yè)面打開(kāi)都需要加載

注意:因?yàn)楹糜蚜斜碓诿恳淮未蜷_(kāi)頁(yè)面的時(shí)候都要加載,所以,我們寫(xiě)在頁(yè)面函數(shù)中。

在js文件中:

// pages/friends/friends.js
Page({

  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {

  },

  //在每次頁(yè)面加載的時(shí)候進(jìn)行調(diào)用
  onLoad(options) {
   this.getAllUser();
  },
  
  // 功能:獲取所有的用戶信息
  getAllUser(){
  var that=this;
  wx.cloud.database().collection("chat_users1").get(
    {
      success(res){
        console.log(res)
        that.setData({
          userList:res.data
        })
      }
    }
  )
  }


})

在wxml文件中

<button>附近好友</button>
<view >
<button class="myfriends">我的好友</button>
</view>

//寫(xiě)一個(gè)block,經(jīng)常用來(lái)接收一堆相同的數(shù)據(jù)
<block class="list_fox" wx:for="{{userList}}">

//里面的圖片和文本用view標(biāo)簽包裹,為了view在一行顯示
<view class="list_item">
<image class="ima" src="{{item.faceImg}}"></image>
<view class="name">{{item.nickName}}</view>
</view>

</block>

在wxss樣式文件中

.myfriends{

 margin-left: 10rpx;

}
.ima{
  width: 120rpx ;
  height: 120rpx;
  border-radius: 50%;
}
.list_item{
  margin: 10rpx 10rpx;
  padding: 10rpx;
  display: flex;
  flex-direction: row;
  align-items: center;
}
.name{
 margin: 10rpx 10rpx 10rpx 30rpx;
}

具體效果演示:

微信聊天小程序——(三、獲取好友列表)

步驟二、修飾好友頁(yè)面

效果:

微信聊天小程序——(三、獲取好友列表)

思路:

  • 主要是樣式部分

  • 頁(yè)面的數(shù)據(jù)已經(jīng)在上一個(gè)步驟中已經(jīng)獲取,即,userList

  • 這個(gè)頁(yè)面進(jìn)行調(diào)用就行

  • 調(diào)用的時(shí)候,使用block組件,循環(huán)我們獲取到的用戶表

在wxml文件中:

<view>推薦好友:</view>

<block class="list_fox" wx:for="{{userList}}">

  <view class="list_item">

    <view class="left">
      <image class="ima" src="{{item.faceImg}}"></image>
      <view class="name">{{item.nickName}}</view>
    </view>
  <view class="right">添加好友</view>

  </view>

</block>

<view>我的好友:</view>

在js文件中:

// pages/friends/friends.js
Page({

  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {

  },

  /**
   * 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
   */
  onLoad(options) {
   this.getAllUser();
  },
  // 功能:獲取所有的用戶信息
  getAllUser(){
  var that=this;
  wx.cloud.database().collection("chat_users1").get(
    {
      success(res){
        console.log(res)
        that.setData({
          userList:res.data
        })
      }
    }
  )
  }


})

在wxss文件中:

注意這個(gè)時(shí)候,我們?cè)O(shè)計(jì)樣式的思路:

一行有兩個(gè)盒子,左邊一個(gè),右邊一個(gè)。

其中,左邊的盒子里有兩個(gè)小盒子。

微信聊天小程序——(三、獲取好友列表)

.myfriends{

 margin-left: 10rpx;

}
.ima{
  width: 120rpx ;
  height: 120rpx;
  border-radius: 50%;
}
.list_item{
  margin: 10rpx 10rpx;
  padding: 10rpx;
  display: flex;
  flex-direction: row;

}
.name{
 margin: 10rpx 10rpx 10rpx 30rpx;
}
.left{
 display: flex;
 flex-direction: row;
 
}
.right{
 margin: 10rpx 0rpx 0rpx 350rpx;
}

步驟三、添加好友

具體效果:

微信聊天小程序——(三、獲取好友列表)
微信聊天小程序——(三、獲取好友列表)

思路:

  • 本質(zhì)上是建立一個(gè)新的聊天記錄表,在這個(gè)表格中進(jìn)行操作.
    這個(gè)表格有的參數(shù)
    聊天記錄
    是否為好友
    雙方信息
    當(dāng)然有_id_
  • 當(dāng)一方發(fā)出請(qǐng)求時(shí),建立一個(gè)聊天記錄表
    聊天記錄 空數(shù)組
    是否為好友0
    雙方信息 userA和userB
  • 當(dāng)?shù)卿浟硗庖粋€(gè)賬號(hào)的時(shí)候,從對(duì)方的“我的好友”頁(yè)面,能收到消息
  • _在我的新朋友頁(yè)面本質(zhì)上就是:查詢是否有人發(fā)出好友驗(yàn)證信息,即,userB的_id是否等于此賬號(hào)的_id,并且isfriend是否為0
  • 將獲取到的相應(yīng)的聊天表賦值給本頁(yè)的data,同時(shí)在頁(yè)面中顯示。
  • 如果點(diǎn)擊“同意添加好友”,就意味著向我們的聊天記錄表中,查詢自己是被邀請(qǐng)方,升級(jí)我們的好友狀態(tài)isfriend為1。

首先是我們的friend頁(yè)面中

在js文件中:

兩個(gè)主要函數(shù)

getNewFriends()

 // 功能:當(dāng)點(diǎn)擊新的朋友的時(shí)候,跳轉(zhuǎn)到新的朋友頁(yè)面

addFriend(e)

// 功能:當(dāng)點(diǎn)擊添加好友的時(shí)候,創(chuàng)建關(guān)于用戶和對(duì)應(yīng)好友的聊天表
// 思路:1.通過(guò)獲取對(duì)應(yīng)數(shù)組的角標(biāo),獲取對(duì)應(yīng)的用戶信息userList中
//      2.將用戶和對(duì)應(yīng)好友的用戶信息都作為數(shù)據(jù)庫(kù)表信息,添加到我們的數(shù)據(jù)庫(kù)表中
const app=getApp()
Page({

  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {

  },

  /**
   * 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
   */
  onLoad(options) {
   this.getAllUser();
  },
  // 功能:獲取所有的用戶信息
  getAllUser(){
  var that=this;
  wx.cloud.database().collection("chat_users1").get(
    {
      success(res){
        console.log(res)
        that.setData({
          userList:res.data
        })
      }
    }
  )
  },


  // 功能:當(dāng)點(diǎn)擊新的朋友的時(shí)候,跳轉(zhuǎn)到新的朋友頁(yè)面
  getNewFriends(){
    wx.navigateTo({
      url: '/pages/newFridends/newFridends',
    })
  },

// 功能:當(dāng)點(diǎn)擊添加好友的時(shí)候,創(chuàng)建關(guān)于用戶和對(duì)應(yīng)好友的聊天表
// 思路:1.通過(guò)獲取對(duì)應(yīng)數(shù)組的角標(biāo),獲取對(duì)應(yīng)的用戶信息userList中
//      2.將用戶和對(duì)應(yīng)好友的用戶信息都作為數(shù)據(jù)庫(kù)表信息,添加到我們的數(shù)據(jù)庫(kù)表中
  addFriend(e){
    // // 功能:當(dāng)點(diǎn)擊添加好友的時(shí)候,判斷是否登錄,只有登錄才可以添加好友
    // if(!app.globalData. userInfo){
    //   wx.showToast({
    //     icon:"none",
    //     title: '請(qǐng)登錄',
    //   })
    // }

   console.log(e.currentTarget.dataset.index)//查看點(diǎn)擊情況
   var index=e.currentTarget.dataset.index
   var that=this;
   wx.cloud.database().collection("chat_record1").add({
     data:{
      userA_faceImg:app.globalData.userInfo.faceImg,//頭像
      userA_id:app.globalData.userInfo._id,//唯一身份標(biāo)識(shí)符
      userA_nickName:app.globalData.userInfo.nickName,//昵稱

      userB_faceImg:that.data.userList[index].faceImg,//頭像
      userB_id:that.data.userList[index]._id,//唯一身份標(biāo)識(shí)符
      userB_nickName:that.data.userList[index].nickName,//昵稱
      isFriend:0,//是否是好友,0代表發(fā)送請(qǐng)求,1代表是好友
      record:[]//聊天內(nèi)容進(jìn)行記錄
     },
     success(res){
       console.log(res)
       wx.showToast({
         title: '發(fā)送請(qǐng)求成功',
       })
     }

   })

  }

})

在wxml文件中:



<view bindtap="getNewFriends">新的朋友:</view>
<view>推薦好友:</view>

<block class="list_fox" wx:for="{{userList}}">

  <view class="list_item">

    <view class="left">
      <image class="ima" src="{{item.faceImg}}"></image>
      <view class="name">{{item.nickName}}</view>
    </view>
  <view class="right" bindtap="addFriend" data-index="{{index}}">添加好友</view>

  </view>

</block>

<view>我的好友:</view>

在wxss文件中:

.myfriends{

 margin-left: 10rpx;

}
.ima{
  width: 120rpx ;
  height: 120rpx;
  border-radius: 50%;
}
.list_item{
  margin: 10rpx 10rpx;
  padding: 10rpx;
  display: flex;
  flex-direction: row;

}
.name{
 margin: 10rpx 10rpx 10rpx 30rpx;
}
.left{
 display: flex;
 flex-direction: row;
 
}
.right{
 margin: 10rpx 0rpx 0rpx 350rpx;
}

其次是我們的newfriends頁(yè)面

在我們的js文件中:

addFriend_yes(e)

// 功能:當(dāng)點(diǎn)擊同意的時(shí)候,更新聊天表格中的信息,確認(rèn)添加為好友。
// 思路:1.先獲取具體是同意哪一個(gè)好友的驗(yàn)證,使用index.
//            2.根據(jù)我們點(diǎn)擊的具體好友的的信息記錄情況,獲取兩人好友信息。
//            3.更新其中的好友狀態(tài)信息

getNewFriends()

  // 功能:當(dāng)打開(kāi)頁(yè)面的時(shí)候,加載所有的新的朋友
  // 思路:1.獲取自己的_id
 //             2.在我們的聊天記錄表中查詢,當(dāng)userB_id和我們自身的_id一樣的時(shí)候,我們就獲取到了關(guān)于申請(qǐng)好友的信息
 //             3.將獲取到的信息表賦值給本頁(yè)的data中,在wxml頁(yè)面中渲染

注意在頁(yè)面開(kāi)始加載的時(shí)候就要調(diào)用我們的getNewFriends()函數(shù)。

const app=getApp()
Page({


  data: {

  },

  onLoad(options) {
  this.getNewFriends();
  },

  // 功能:當(dāng)打開(kāi)頁(yè)面的時(shí)候,加載所有的新的朋友
  // 思路:1.獲取自己的_id
 //       2.在我們的聊天記錄表中查詢,當(dāng)userB_id和我們自身的_id一樣的時(shí)候,我們就獲取到了關(guān)于申請(qǐng)好友的信息
 //       3.將獲取到的信息表賦值給本頁(yè)的data中,在wxml頁(yè)面中渲染
  getNewFriends(){
  var that=this;
  console.log(app.globalData.userInfo._id)
  wx.cloud.database().collection("chat_record1").where({
    userB_id:app.globalData.userInfo._id,
    isFriend:0,
    }).get({
      success(res){
      that.setData({
        newFridendsList:res.data
      })
      console.log(res)
      }
    })
  },


// 功能:當(dāng)點(diǎn)擊同意的時(shí)候,更新聊天表格中的信息,確認(rèn)添加為好友。
// 思路:1.先獲取具體是同意哪一個(gè)好友的驗(yàn)證,使用index.
//      2.根據(jù)我們點(diǎn)擊的具體好友的的信息記錄情況,獲取兩人好友信息。
//      3.更新其中的好友狀態(tài)信息
  addFriend_yes(e){
    var that=this
    console.log(e.currentTarget.dataset.index)
    const index=e.currentTarget.dataset.index
    wx.cloud.database().collection("chat_record1").doc(that.data.newFridendsList[index]._id).update({
      data:{
        isFriend:1
      },
      success(res){
        wx.switchTab({
          url: '/pages/friends/friends',
        })
        wx.showToast({
          title: '添加成功',
        })
        console.log(res)
      }
    })
  }
  
})

在wxml文件中:

 <block wx:for="{{newFridendsList}}">
  <view class="img-zh" >
    <view class="left">
      <image class="img" src="{{item.userA_faceImg}}"></image>
      <view class="img-text">{{item.userA_nickName}}</view>    
    </view>
   <view class="right" bindtap="addFriend_yes" data-index="{{index}}">同意</view>
  </view>
</block> 

在我們的樣式文件wxss文件中:

.img-zh{
  display: flex;
  flex-direction: row;
  height: 120rpx;
 margin: 10rpx 10rpx 0rpx 20rpx;
 justify-content: space-between;

}
/*頭像圖片樣式 */
.img{
  border-radius: 50%;
  height: 100rpx;
  width: 100rpx;
  margin-top: 10rpx;
}
/* 賬號(hào)顯示樣式 */
.img-text{
  margin: 40rpx;
}
.left{
  display: flex;
  flex-direction: row;
}
.right{
  margin: 45rpx 20rpx 0rpx 5rpx;
}

#####步驟四、我的好友頁(yè)面渲染

具體效果:

微信聊天小程序——(三、獲取好友列表)

思路:

  • 本質(zhì)
    查詢滿足條件的聊天表
    isfriend
    userA_id或者userB_id。因?yàn)锳和B主要是看誰(shuí)先發(fā)出申請(qǐng),發(fā)出之后,就用這張表。
  • 方法
    同時(shí)查詢兩類條件
  • 渲染(wxml)
    將返回到的列表,給本頁(yè)的data中
    我的好友頁(yè)面,展示的是我的好友,而不是我。所以,userA或者userB都可能是我們的好友。因此,進(jìn)行一個(gè)判斷,如果是我們自己的時(shí)候,暫時(shí)另外一個(gè)user。
  • 注意
    在頁(yè)面展示的時(shí)候都要調(diào)用,以便于我們直接顯示好友。

微信聊天小程序——(三、獲取好友列表)

在我們的好友頁(yè)面中:

js文件:

const app=getApp()
Page({

  /**
   * 頁(yè)面的初始數(shù)據(jù)
   */
  data: {

  },

  onShow(){
    this.getAllUser();
    this.myFriends();
    // 功能:當(dāng)每次打開(kāi)的時(shí)候,我們渲染好友頁(yè)面的時(shí),需要有一個(gè)判斷,這個(gè)時(shí)候要用到userinfo
    this.setData(
      {
        userInfo:app.globalData.userInfo
      }
    )
  },
  /**
   * 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
   */
  onLoad(options) {
  //  this.getAllUser();
  },
  // 功能:獲取所有的用戶信息
  getAllUser(){
  var that=this;
  wx.cloud.database().collection("chat_users1").get(
    {
      success(res){
        console.log(res)
        that.setData({
          userList:res.data
        })
      }
    }
  )
  },


  // 功能:當(dāng)點(diǎn)擊新的朋友的時(shí)候,跳轉(zhuǎn)到新的朋友頁(yè)面
  getNewFriends(){
    wx.navigateTo({
      url: '/pages/newFridends/newFridends',
    })
  },

// 功能:當(dāng)點(diǎn)擊添加好友的時(shí)候,創(chuàng)建關(guān)于用戶和對(duì)應(yīng)好友的聊天表
// 思路:1.通過(guò)獲取對(duì)應(yīng)數(shù)組的角標(biāo),獲取對(duì)應(yīng)的用戶信息userList中
//      2.將用戶和對(duì)應(yīng)好友的用戶信息都作為數(shù)據(jù)庫(kù)表信息,添加到我們的數(shù)據(jù)庫(kù)表中
  addFriend(e){
    // // 功能:當(dāng)點(diǎn)擊添加好友的時(shí)候,判斷是否登錄,只有登錄才可以添加好友
    // if(!app.globalData. userInfo){
    //   wx.showToast({
    //     icon:"none",
    //     title: '請(qǐng)登錄',
    //   })
    // }

   console.log(e.currentTarget.dataset.index)//查看點(diǎn)擊情況
   var index=e.currentTarget.dataset.index
   var that=this;
   wx.cloud.database().collection("chat_record1").add({
     data:{
      userA_faceImg:app.globalData.userInfo.faceImg,//頭像
      userA_id:app.globalData.userInfo._id,//唯一身份標(biāo)識(shí)符
      userA_nickName:app.globalData.userInfo.nickName,//昵稱

      userB_faceImg:that.data.userList[index].faceImg,//頭像
      userB_id:that.data.userList[index]._id,//唯一身份標(biāo)識(shí)符
      userB_nickName:that.data.userList[index].nickName,//昵稱
      isFriend:0,//是否是好友,0代表發(fā)送請(qǐng)求,1代表是好友
      record:[]//聊天內(nèi)容進(jìn)行記錄
     },
     success(res){
       console.log(res)
       wx.showToast({
         title: '發(fā)送請(qǐng)求成功',
       })
     }

   })
  },


  // 功能:當(dāng)我的好友頁(yè)面展示的時(shí)候,顯示出我的好友
  // 思路:1.查詢聊天表中,A或B為我們userinfo相同_id同時(shí),好友狀態(tài)為1。注意這個(gè)時(shí)候可以用command.or
  //      2.將滿足條件的值給到我們本頁(yè)的data中
  //      3.渲染的時(shí)候,進(jìn)行判斷,因?yàn)锳和B都可能是我們的好友,所以,當(dāng)某個(gè)是我們好友的時(shí)候,不在本頁(yè)渲染。
  myFriends(){
    var that = this;
    const _ = wx.cloud.database().command
    wx.cloud.database().collection("chat_record1").where(
      _.or([
      {
        userA_id:app.globalData.userInfo._id,
        isFriend:1
     },
     {
      userB_id:app.globalData.userInfo._id,
      isFriend:1
     }])
   ).get({
      success(res){
        console.log(res)
        that.setData({
          myFriendsList:res.data
        })
      }
    })
   },

})

在wxml文件中:



<view bindtap="getNewFriends">新的朋友:</view>
<view>推薦好友:</view>

<block class="list_fox" wx:for="{{userList}}">
  <!-- <block wx:if="{{userInfo._id==item._id}}"> -->
  <view class="list_item">

    <view class="left">
      <image class="ima" src="{{item.faceImg}}"></image>
      <view class="name">{{item.nickName}}</view>
    </view>
  <view class="right" bindtap="addFriend" data-index="{{index}}">添加好友</view>

  </view>
  <!-- </block> -->

</block>

<view>我的好友:</view>

<block class="list_fox" wx:for="{{myFriendsList}}">

  <view  class="list_item">
  <!-- 其中的一個(gè)條件 -->
    <block wx:if="{{userInfo._id==item.userA_id}}">
      <view class="left">
        <image class="ima" src="{{item.userB_faceImg}}"></image>
        <view class="name">{{item.userB_nickName}}</view>
      </view>
    </block>
  <!-- 其中的另外一個(gè)條件 -->
    <block wx:if="{{userInfo._id==item.userB_id}}">
      <view class="left">
        <image class="ima" src="{{item.userA_faceImg}}"></image>
        <view class="name">{{item.userA_nickName}}</view>
      </view>
    </block>

  </view>

</block>

在wxss文件中:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-486269.html

.myfriends{

 margin-left: 10rpx;

}
.ima{
  width: 120rpx ;
  height: 120rpx;
  border-radius: 50%;
}
.list_item{
  margin: 10rpx 10rpx;
  padding: 10rpx;
  display: flex;
  flex-direction: row;

}
.name{
 margin: 10rpx 10rpx 10rpx 30rpx;
}
.left{
 display: flex;
 flex-direction: row;
 
}
.right{
 margin: 10rpx 0rpx 0rpx 350rpx;
}

到了這里,關(guān)于微信聊天小程序——(三、獲取好友列表)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包