我创造了我的nuxt应用程序内一个博客,从被contentful香港专业教育学院下面这个tutorial中提取数据,我可以让所有的权利,但我不能似乎得到这两个背景和环境变量我设置了从asyncData
返回争论
我创建了一个JSON文件,像这样..
.contentful.json
{
"CTF_BLOG_POST_ITEM": "...",
"CTF_BLOG_POST": "...",
"CTF_SPACE_ID": "...",
"CTF_CDA_ACCESS_TOKEN":"..."
}
然后在我的nuxt.config.js
env: {
CTF_SPACE_ID: config.CTF_SPACE_ID,
CTF_CDA_ACCESS_TOKEN: config.CTF_CDA_ACCESS_TOKEN,
CTF_BLOG_POST_ITEM: config.CTF_BLOG_POST_ITEM,
CTF_BLOG_POST: config.CTF_BLOG_POST
}
现在基本上在我的部分,我一直在努力做这
asyncData(context, {env}) {
return Promise.all([
client.getEntries({
'content_type': env.CTF_BLOG_POST_ITEM,
order: '-sys.createdAt'
})
]).then(([posts]) => {
console.log(context);
return {
posts: posts.items
}
})
},
但是当我运行此我得到cannot read property CTF_BLOG_POST_ITEM of undefined
,如果我走了上下文这部作品的论据的,反之亦然,如果我走{env}
我得到的上下文。
我怎样才能得到这两个?
谢谢
asyncData()的主(第一)参数是context object。 env
是上下文对象的属性。你可以访问它context.env
无需使用object restructuring assignment的。你的例子可以在无需使用对象调整分配如下方式重写:
asyncData(context) {
return Promise.all([
client.getEntries({
'content_type': context.env.CTF_BLOG_POST_ITEM,
order: '-sys.createdAt'
})
]).then(([posts]) => {
console.log(context);
console.log(context.env);
return {
posts: posts.items
}
})
},
因为你要添加第二个参数,asyncData(context, {env}) {
,不引用上述上下文对象以任何方式签名{env}
不正确。如果你只需要env
从context
,你可以使用object restructuring assignment正如你所说,当你删除第一个参数的作品来提取通过以下方式这个属性(:
asyncData({env}) {
return Promise.all([
client.getEntries({
'content_type': context.env.CTF_BLOG_POST_ITEM,
order: '-sys.createdAt'
})
]).then(([posts]) => {
console.log(context);
console.log(context.env);
return {
posts: posts.items
}
})
},
如果您需要额外的上下文对象的属性,使用对象解构赋值。 TT看起来像:
asyncData({env, params, req, res}) {
否则,你可以通过传递context.env
与重组的第一/主要论点只是访问诸如context.params
,context
等特性。
希望帮助!