如何让asyncData nuxtjs背景和ENV变量

问题描述 投票:0回答:1

我创造了我的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}我得到的上下文。

我怎样才能得到这两个?

谢谢

vue.js vuejs2 nuxt.js
1个回答
1
投票

asyncData()的主(第一)参数是context objectenv是上下文对象的属性。你可以访问它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}不正确。如果你只需要envcontext,你可以使用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.paramscontext等特性。

希望帮助!

© www.soinside.com 2019 - 2024. All rights reserved.