欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解

 更新時(shí)間:2022年08月02日 11:08:24   作者:低代碼布道師  
小程序設(shè)計(jì)中,通常會(huì)根據(jù)業(yè)務(wù)來(lái)做多表的拆分,多表拆分一般是根據(jù)業(yè)務(wù)的特點(diǎn)進(jìn)行拆分。比如我們?cè)谖恼玛P(guān)注的業(yè)務(wù)中,會(huì)將文章和關(guān)注信息拆分成一對(duì)多的表關(guān)系。初學(xué)者可能對(duì)一對(duì)一、一對(duì)多、多對(duì)多的設(shè)計(jì)概念不是特別清楚

一對(duì)一的設(shè)計(jì)一般不常見(jiàn),只需要設(shè)計(jì)到主表中即可,避免增加復(fù)雜性。一對(duì)多的關(guān)系比較常見(jiàn),一的一方通常作為主表,多的一方通常作為子表。而多對(duì)多一般會(huì)拆分成兩個(gè)一對(duì)多的關(guān)系,這就必須要用中間表進(jìn)行過(guò)渡。

我們本篇介紹的多表查詢,側(cè)重在一對(duì)多的關(guān)系,我們先看一下我們實(shí)際的表設(shè)計(jì)

一對(duì)多表設(shè)計(jì)

我們實(shí)現(xiàn)的是文章關(guān)注的業(yè)務(wù),通常將文章作為主表,而關(guān)注信息作為子表。表和表之間要進(jìn)行關(guān)聯(lián),常見(jiàn)的設(shè)計(jì)思路是子表的外鍵和主表的主鍵進(jìn)行關(guān)聯(lián)

這里的文章表的主鍵是_id,所謂的主鍵就是可以唯一標(biāo)識(shí)該條數(shù)據(jù),數(shù)據(jù)不允許重復(fù)。關(guān)注表的articleid作為關(guān)注表的外鍵,外鍵可以重復(fù),存儲(chǔ)的是主表的主鍵。

SQL中的關(guān)聯(lián)查詢

在sql中可以對(duì)表進(jìn)行關(guān)聯(lián)查詢,我們使用select 語(yǔ)句來(lái)進(jìn)行關(guān)聯(lián),關(guān)聯(lián)的語(yǔ)句為

select * from article a , focus f where a._id = f.articleid

兩個(gè)表進(jìn)行關(guān)聯(lián)之后其實(shí)是對(duì)表進(jìn)行了合并,將文章表的字段和關(guān)注表的字段合并成一個(gè)表,關(guān)聯(lián)的條件是文章表的數(shù)據(jù)標(biāo)識(shí)和關(guān)注表的articleid做等值連接

低碼中的表關(guān)聯(lián)

低碼中的表設(shè)計(jì)也遵循數(shù)據(jù)庫(kù)的表設(shè)計(jì),不同的是,低碼中的外鍵不需要自己?jiǎn)为?dú)設(shè)計(jì),可以設(shè)置成關(guān)聯(lián)關(guān)系即可,比如文章表的字段

一般我們的數(shù)據(jù)標(biāo)識(shí)就是我們表的主鍵,關(guān)注表可以存儲(chǔ)外鍵

我們這里的articleid的數(shù)據(jù)類型設(shè)置成關(guān)聯(lián)關(guān)系其實(shí)就是一種外鍵的意思。

自定義連接器中實(shí)現(xiàn)表關(guān)聯(lián)查詢

要想在低碼中實(shí)現(xiàn)表和表之間的關(guān)聯(lián)查詢,需要使用aggregate聚合的語(yǔ)法,聚合語(yǔ)法也有本表和需要連接的表,官方文檔里使用了lookup進(jìn)行表關(guān)聯(lián)

lookup({
from: <要連接的集合名>,
localField: <輸入記錄的要進(jìn)行相等匹配的字段>,
foreignField: <被連接集合的要進(jìn)行相等匹配的字段>,
as: <輸出的數(shù)組字段名>
})

具體的參數(shù)說(shuō)明

參數(shù)字段說(shuō)明
from要進(jìn)行連接的另外一個(gè)集合的名字
localField當(dāng)前流水線的輸入記錄的字段名,該字段將被用于與 from 指定的集合的 foreignField 進(jìn)行相等匹配。如果輸入記錄中沒(méi)有該字段,則該字段的值在匹配時(shí)會(huì)被視作 null
foreignField被連接集合的字段名,該字段會(huì)被用于與 localField 進(jìn)行相等匹配。如果被連接集合的記錄中沒(méi)有該字段,該字段的值將在匹配時(shí)被視作 null
as指定連接匹配出的記錄列表要存放的字段名,這個(gè)數(shù)組包含的是匹配出的來(lái)自 from 集合的記錄。如果輸入記錄中本來(lái)就已有該字段,則該字段會(huì)被覆寫(xiě)

光看文檔解釋可能還不是特別明白,我們需要具體實(shí)踐一下

新建連接器

登錄控制臺(tái),點(diǎn)擊自定義連接器,點(diǎn)擊新建自定義連接器

輸入名稱和標(biāo)識(shí)

點(diǎn)擊添加方法,新增關(guān)聯(lián)查詢的方法

在自定義代碼編輯器里輸入如下代碼

module.exports = async function (params, context) {
  const result = await context.database.collection('lcap-data-2cc504BEZ-gz_necsx6t-preview').aggregate()
  .match({
    openid:params.openid
  })
  .lookup({
    from: 'lcap-data-2cc4oRuu1-wz_hbmrxec-preview',
    localField: 'articleid',
    foreignField: '_id',
    as: 'articles',
  })
  .end()
  // 在這里返回這個(gè)方法的結(jié)果,需要與出參定義的結(jié)構(gòu)映射
  return result.data;
};

為了讓代碼運(yùn)行,先需要新建入?yún)?/p>

入?yún)⒔ê弥?,在代碼里對(duì)應(yīng)的match字段,其中左邊是字段標(biāo)識(shí),右邊可以通過(guò)params.openid來(lái)獲取到入?yún)?/p>

集合的名稱需要在云開(kāi)發(fā)cloudbase的數(shù)據(jù)庫(kù)里找

這些都準(zhǔn)備好了就要對(duì)好localField和foreignField,我們這里的localField是關(guān)注表里存儲(chǔ)的文章id,而foreignField是文章表的數(shù)據(jù)標(biāo)識(shí)

入?yún)⒔ê弥笮枰c(diǎn)擊方法測(cè)試

測(cè)試成功之后就可以點(diǎn)擊出參映射,這樣一個(gè)方法就做好了。這里有必要說(shuō)一下返回的結(jié)果

[

  {

    "_id": "16db756f62e7386d0cfdef132edd5e8a",

    "owner": "1448239235785420802",

    "createdAt": 1659320429844,

    "createBy": "1448239235785420802",

    "wzbs": "111",

    "updateBy": "1448239235785420802",

    "openid": "1111",

    "articleid": "ca780ad562c290d509bd361d555705c3",

    "updatedAt": 1659320429844,

    "articles": [

      {

        "_id": "ca780ad562c290d509bd361d555705c3",

        "owner": "1448239235785420802",

        "createdAt": 1656918229822,

        "bt": "最新文章一",

        "createBy": "1448239235785420802",

        "nr": "<p><span style=\"color:#222222\"><span style=\"font-size:18px\"><span style=\"background-color:#ffffff\">如果你是已經(jīng)落實(shí)工作單位的畢業(yè)生,請(qǐng)及時(shí)與用人單位簽訂勞動(dòng)合同,跟進(jìn)繳納社會(huì)保險(xiǎn),確認(rèn)檔案轉(zhuǎn)遞去向,并在規(guī)定時(shí)間內(nèi)辦理戶口遷移、黨團(tuán)組織關(guān)系接轉(zhuǎn)等手續(xù)。你入職的企業(yè),也可以申請(qǐng)社會(huì)保險(xiǎn)補(bǔ)貼、吸納就業(yè)補(bǔ)貼以及擴(kuò)崗補(bǔ)助等政策支持。</span></span></span></p>",

        "fbrq": 1656864000000,

        "updateBy": "1448239235785420802",

        "updatedAt": 1656918229822

      }

    ]

  }

]

返回的是一個(gè)數(shù)組,數(shù)組里包含一個(gè)對(duì)象,對(duì)象的基本屬性是顯示的關(guān)注表的字段,而articles是具體用戶關(guān)注的文章的集合,在做展示的時(shí)候其實(shí)是要綁定articles才對(duì)

總結(jié)

要想實(shí)現(xiàn)多表之間的關(guān)聯(lián)查詢,先需要做數(shù)據(jù)庫(kù)設(shè)計(jì),然后按照文檔的聚合語(yǔ)法編寫(xiě)自定義連接器實(shí)現(xiàn),具體還需要結(jié)合你自己的業(yè)務(wù)才可以。

到此這篇關(guān)于微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)小程序多表聯(lián)合查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論