Blockchain code Metaverse VR

Crypto×VR×SmartContract(532)

スポンサーリンク

//tips

遂に蚊が発生。xserver復旧してよかった。

//smart contract

Follow,Follower機能の追加を考えていく。

データベースにどのように格納していくか。Follow,Follower機能について検索してみるとnext.jsではヒットせずrailsなどに関する記事が出てくる。reactに関するfollow functionでいくつか該当する記述を見つけた。

https://stackoverflow.com/questions/68846006/how-can-i-save-users-followers-in-firebase-react-native

Making a Follow button for my app. from reactjs

Userid何番がuserid何番をfollowしているなどの情報をどうデータベースに格納するか模索していたところ、firebaseのデータベースの中にarrayとmapでの格納型を見つけた。

これらをうまく利用して、対応できないか。

https://dev.plus-class.jp/firestore-array/

https://cloud.google.com/firestore/docs/manage-data/add-data?hl=ja

Arrayに関する記事を見つけた。

こちらを参考にしながら試しに格納してみる。このarrayの組み込みタイミングはuseridが生成されるタイミングがベストに思われるので、その際に自動的に下記の項目も生成される形にするか。

following:
followers:

その後にfriendsなどがボタンプッシュするとpush主のuseridを何らかの形で取得して、このarrayに格納。

表示するfollowing数、follower数は.lengthで処理して表示する。

後にはそれらの表示された数字をクリックすると、各々のユーザーの名前とimageを表示させたい。これは別ページにて行うか、同一ページの下部に表示切り替えの形で表示させるか考える。

Twitterのように別ページを設けて表示させるか。

Followingやfollowerの運用はのちに組み込むブロックチェーンのリワードシステムとも関連があるのでどう使うか。

まずはfirestoreの中に配列データを生成して取り出したり、組み込んだりしてみる。

followersフィールドを作成したら、その中のインデックスに0,1…として値が組み込めるようになっているので試しに

followers:0 naki 1 niku

として値の取り出しを行なってみる。

const arraytest=async ()=>{
console.log('arraytest')
const profileRef=collection(firebaseApp,'mydata','0Ot5NWeoMULnEMvJp8xw')

await updateDoc(profileRef, {
followers: arrayUnion('Real Madrid')
})

// await updateDoc(profileRef, {
// followers: arrayRemove('Drole de monsieur')
// })

}

こちらのエラーが発生。

unhandledRejection: FirebaseError: [code=invalid-argument]: Invalid collection reference. Collection references must have an odd number of segments, but mydata/0Ot5NWeoMULnEMvJp8xw has 2.

9.0へのアップデートによりかなりの改変があったのを思い出した。firebaseのドキュメントをベースに探していくしかない。

ここはcollectではなくdocを用いてくださいというエラーだった。杞憂。

const arraytest=async ()=>{
console.log('arraytest')
const profileRef=doc(firebaseApp,'mydata','0Ot5NWeoMULnEMvJp8xw')

// await updateDoc(profileRef, {
// followers: arrayUnion('Real Madrid')
// })

await updateDoc(profileRef, {
followers: arrayRemove('Real Madrid')
})

}

arraytest();

これでarrayへの追加・削除は問題なくできた。

今度はそもそものarray情報の追加も行う。

通常のadddocを使用するときちんとfriendsは[]を使うだけで配列にできた。

const docRef = await addDoc(collection(firebaseApp,'mydata'), {
name: "Tokyo",
country: "Japan",
friends: ["Japan"]
});

既存のドキュメントの中に新たなフィールドを追加できるのか。

https://qiita.com/kokogento/items/866236257a03f4dbae5b

こちらはフィールドをあたらに追加するメソッドはなさそうだが、updateDocでarrayUnion('Real Madrid’)を使えば自動的に付与できるのではないかと気づき、実行。

const arraytest=async ()=>{
console.log('arraytest')
const profileRef=doc(firebaseApp,'mydata','0Ot5NWeoMULnEMvJp8xw')

await updateDoc(profileRef, {
friends: arrayUnion('Real Madrid')
})

無事にこちらで対応できた。素晴らしい。

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HACKER , 2022 All Rights Reserved Powered by AFFINGER5.