Blockchain code Metaverse VR

SmartContract×VR×Crypto(571)

スポンサーリンク

//tips

夜の仮眠による分割睡眠はどうか、または睡眠改善薬で単一睡眠を強化するか。

//smart contract

Whereの条件二つ分userid==1 or Towhom==“1”出取得したデータのを融合作業をしていく。

export const getStaticProps の中身の改良。

二つの条件を融合させるために別のメソッドを経由して

.then(result => {
result.forEach(docSnapshot => {

での展開を実行させる。

融合用の別メソッドの作成。

async function getIsBoth() {
const colRef= await collection(firebaseApp, "directmessage")

const isTo = colRef.where('userid', '==', id).get();
const isFrom = colRef.where(‘Towhom, '==', context.params.id).get();

const [isToQuerySnapshot, isFromQuerySnapshot] = await Promise.all([
isTo,
isFrom
]);

const isToArray = isToQuerySnapshot.docs;
const isFromArray = isFromQuerySnapshot.docs;

const ToFromArray = isToArray.concat(isFromArray);

return ToFromArray;
}

そこまで記述量は多くなかったのでgetStaticPropsにメソッドをそのまま導入してしまう。

export const getStaticProps = async (context) => {

let posts = []

const id = parseInt(context.params.id)

const colRef= await collection(firebaseApp, "directmessage")

const isTo = colRef.where('userid', '==', id).get();
const isFrom = colRef.where('Towhom', '==', context.params.id).get();

const [isToQuerySnapshot, isFromQuerySnapshot] = await Promise.all([
isTo,
isFrom
]);

const isToArray = isToQuerySnapshot.docs;
const isFromArray = isFromQuerySnapshot.docs;

const ToFromArray = isToArray.concat(isFromArray);

// const q = await query(colRef,where("userid","==",id))

//await getDocs(q)
await ToFromArray
.then((snapshot)=>{

snapshot.docs.forEach(doc => {
const data = doc.data()
console.log('data.title')

これでninjaには自身が送付側の場合と受取側の場合の両方の情報を取ることができる。

{ninja.map((item,index) => (にて受取側の情報も表示されるかの確認。

colRef.where('userid', '==', id).get();でエラーが出たので最新表記に変更。

下記で試す。

const isTo = query(colRef,where("userid","==",id)).get();
const isFrom = query(colRef,where('Towhom', '==', context.params.id)).get();

.get()部分がエラー。次にconcatでエラー。

新バージョンのfirestorageに通用しない。

一旦元の形に戻し、snapshot.docs.forEach(doc => {の中でデータを選別することにする。

await getDocs(colRef)
.then((snapshot)=>{

snapshot.docs.forEach(doc => {
const data = doc.data()
console.log('data.title')

const pile={}
if(data.userid==id||data.Towhom==context.params.id){

Towhomにて記載されている部分がきちんと表示されない。data.Towhom==context.params.idのデータがきちんと取れていないようなのでログの確認。

ログにも出ていないのでデータベースを確認してみるとTowhomのみが1のものが削除されていた。こちらを復元すると無事に表示させることができた。

ここからさらに時間の順番に表示を並び替えていく。

時間を取得しようとしたところ配列に格納されていなかったので追加。

pile.date = data.date ?data.date:null

以前使用したsortを活用。

let ninjav = ninja.sort(function(a, b) {
return (a.cardorder < b.cardorder) ? -1 : 1; //オブジェクトの昇順ソート
//return (a.cardorder > b.cardorder) ? -1 : 1; //オブジェクトの降順ソート
});

これを応用し、

{ninjav.map((item,index) => (
<div key={index} >
<Typography className={classes.titlebackshape}>
{item.username}: {item.Message}:{item.date}
</Typography>
</div>
))
}

こちらにてきちんと順番にメッセージを表示させることができた。

さらにここからTowhomがある場合には表示を分岐させるようにさせる。

{ninjav.map((item,index) => (
<div key={index} >
{item.userid==localStorage.getItem('authuserid')
?
<Typography className={classes.titlebackshape}>
{item.username}: {item.Message}:{item.date}:right
</Typography>
:

<Typography className={classes.titlebackshape}>
{item.username}: {item.Message}:{item.date}
</Typography>
}

localStorage.getItem('authuserid’)でエラーが発生。

見直していてまずいと気がつく。

というのも既にメールのみでの運用に特化しているためlocalStorage.setItem('authuserid',ninja[0].userid)は成立しない。

Messageページでは自身のidはauthuseridとして取り出して運用する必要がある。

localStorage.setItem('authuserid',ninja[0].userid)の記述は削除。

代わりに変数に詰め込む。
const [authid, setauthid] = useState('')

useEffect(() => {
// if(localStorage.getItem('authhistory')==ninja[0].mail){ localStorage.setItem('authuserid',ninja[0].userid)}
setauthid(localStorage.getItem('authuserid'))
}
, [])

{item.userid==authidとしてきちんと分岐させることができた。これで発言者が自分か相手かを視覚的に区別できる。

さて、ここでuser1に関するメールの全てとその送受信の立場を確認することができたので、一対一のメッセージ関係にメッセージを分離させていく必要がある。

メッセージの抜き出しに会話主の制限を加えるので、遷移してきた場合には、下記二つのuseridに該当しないものは弾く必要がある。

{item.userid==localStorage.getItem('authuserid')&&(
{item.userid==localStorage.getItem('Towhom')&&(

遷移してきた場合ではなく、直にメッセージページにきた場合のことも別に考える必要があるがこれは後で。

三項演算子の外にもう一つ制限を加えるか。

 

人気の記事

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.