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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我們這里的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聚合的語法,聚合語法也有本表和需要連接的表,官方文檔里使用了lookup進(jìn)行表關(guān)聯(lián)

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

具體的參數(shù)說明

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

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

新建連接器

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

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

點(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)⒔ê弥螅诖a里對應(yīng)的match字段,其中左邊是字段標(biāo)識,右邊可以通過params.openid來獲取到入?yún)?/p>

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

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

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

測試成功之后就可以點(diǎn)擊出參映射,這樣一個(gè)方法就做好了。這里有必要說一下返回的結(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è)生,請及時(shí)與用人單位簽訂勞動合同,跟進(jìn)繳納社會保險(xiǎn),確認(rèn)檔案轉(zhuǎn)遞去向,并在規(guī)定時(shí)間內(nèi)辦理戶口遷移、黨團(tuán)組織關(guān)系接轉(zhuǎn)等手續(xù)。你入職的企業(yè),也可以申請社會保險(xiǎn)補(bǔ)貼、吸納就業(yè)補(bǔ)貼以及擴(kuò)崗補(bǔ)助等政策支持。</span></span></span></p>",

        "fbrq": 1656864000000,

        "updateBy": "1448239235785420802",

        "updatedAt": 1656918229822

      }

    ]

  }

]

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

總結(jié)

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

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

相關(guān)文章

最新評論