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

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

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

3

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

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.