nuxtでOGPタグをfirestoreから取得で動的にしたい際につまったところ
やったこと
- OGPタグの画像URLをfirestoreから取得して動的にした
仕様全体像
- nuxt×firestore
- defaultはnuxt.config.jsで指定。個別ページにcomponentのheadプロパティで上書き
- firestoreから取得したtitleをURLに入れる
- OGPのURLはcloudinaryのdynamicURLを使用
- dataとasyncDataを用意し、awaitでfirestoreからtitleを取得
- componentのheadプロパティでog:imageをset
コード
data () {
return {
room_title: '',
}
},
async asyncData ({ route }) {
let doc_room_title
/*room情報取得*/
var roomRef = db.collection('room').doc(route.params.id)
await roomRef.get().then(doc => {
doc_room_title = doc.data().room_title
})
return {
room_title: doc_room_title,
}
},
head () {
return {
meta: [
{ hid: 'og:image', property: 'og:image', content: `hogehoge/image/upload/${this.room_title}/hogehoge.png` }
]
}
},
はまりどころ
SSRでtwitterにogp情報を渡す場合レンダリングタイミングが難しい
- nuxt×firestore
- defaultはnuxt.config.jsで指定。個別ページにcomponentのheadプロパティで上書き
- firestoreから取得したtitleをURLに入れる
- OGPのURLはcloudinaryのdynamicURLを使用
- dataとasyncDataを用意し、awaitでfirestoreからtitleを取得
- componentのheadプロパティでog:imageをset
コード
data () {
return {
room_title: '',
}
},
async asyncData ({ route }) {
let doc_room_title
/*room情報取得*/
var roomRef = db.collection('room').doc(route.params.id)
await roomRef.get().then(doc => {
doc_room_title = doc.data().room_title
})
return {
room_title: doc_room_title,
}
},
head () {
return {
meta: [
{ hid: 'og:image', property: 'og:image', content: `hogehoge/image/upload/${this.room_title}/hogehoge.png` }
]
}
},
はまりどころ
SSRでtwitterにogp情報を渡す場合レンダリングタイミングが難しい
twitterが読み込めるようにSSRをしたんだがレンダリングタイミングが難しかった。
レンダリング直前のbeforeCreateでいけんだろと書いてたけど取得できず。beforeCreateでは無理だったのでasyncDataでとってきたが取得する前にレンダリングしてたのか空になっていた。そのためawaitで記述。
Author And Source
この問題について(nuxtでOGPタグをfirestoreから取得で動的にしたい際につまったところ), 我々は、より多くの情報をここで見つけました https://qiita.com/you8/items/fe0b4af7f17a8e6746f7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .