Javascript 如何在Cookies中存储对象

Javascript 如何在Cookies中存储对象,javascript,vue.js,cookies,nuxt.js,Javascript,Vue.js,Cookies,Nuxt.js,我在Nuxt中有一个应用程序,我想在cookies中存储购物车的内容。为了储存饼干,我使用了包装。但是,我无法在其中存储“某些”对象。以下是一个例子: const userInfo = { name: 'Smith', age: 41, isVip: true, } this.$cookies.set('userInfo', JSON.stringify(userInfo)) console.log(this.$cookies.ge

我在Nuxt中有一个应用程序,我想在cookies中存储购物车的内容。为了储存饼干,我使用了包装。但是,我无法在其中存储“某些”对象。以下是一个例子:

const userInfo = {
        name: 'Smith',
        age: 41,
        isVip: true,
      }

this.$cookies.set('userInfo', JSON.stringify(userInfo))

console.log(this.$cookies.get('userInfo'))

这是应该的,没有问题。 问题是,它不适用于我的真实对象:

const savedProductsArray = this.$store.getters['cart/products'] // returns array of products
const savedProducts = savedProductsArray[0] // select first one

this.$cookies.set('productInfo', JSON.stringify(savedProducts))

console.log(this.$cookies.get('productInfo')) // prints undefined
因此,第二个对象似乎没有存储在cookies中。知道为什么吗?谢谢

顺便说一句,这是userInfo对象在控制台中的外观:

Object {
   age: 41,
   name: "Smith",
   isVip: true,
}
和存储产品:

Object {
   calories: 123, 
   name: "a",
   ...
}

因此,看起来它们是“相同”的对象,但不知何故,只有第一个对象可以存储在cookie中…

更新:OP确认问题在于cookie大小


可能会有多个问题,您是否可以检查
JSON.stringify(savedProducts)
的值是多少?如果您可以在帖子中包含完全stringized savedProducts,这也会有所帮助


另外,请注意,每个域仅允许cookie的大小为4KB,因此如果您试图存储那么多数据,这可能也是原因之一更新:OP确认cookie大小存在问题


可能会有多个问题,您是否可以检查
JSON.stringify(savedProducts)
的值是多少?如果您可以在帖子中包含完全stringized savedProducts,这也会有所帮助


另外,请注意,每个域的cookie大小仅允许为4KB左右,因此,如果您试图存储那么多数据,这可能也是原因之一

您是否可以检查
JSON.stringify(savedProducts)
的值。如果您可以在帖子中包含完全stringized
savedProducts
,这也会有所帮助。另外,请注意,每个域的cookie大小仅允许为4KB,因此如果您试图存储那么多数据,这可能也是原因。是的,我的JSON对象比4KB大很多,所以这就是问题所在。我不知道这个限制。@DipenShah,请将您的评论作为答案发布。peter1993_de可以接受您的答案,您可能会收到奖金。不确定您是否可以重置所选答案,但确定。奖励奖金与接受答案是分开的。平心而论,OP应该邀请您将其添加为答案,而不是自己发布。既然他们提供了赏金,而你是找到正确解决方案的人,你的答案应该得到赏金,但这完全取决于OP。你能检查一下
JSON.stringify(savedProducts)
的价值吗?如果你能在帖子中包含完全字符串化的
savedProducts
,也会有所帮助。另外,请注意,每个域的cookie大小仅允许为4KB,因此如果您试图存储那么多数据,这可能也是原因。是的,我的JSON对象比4KB大很多,所以这就是问题所在。我不知道这个限制。@DipenShah,请将您的评论作为答案发布。peter1993_de可以接受您的答案,您可能会收到奖金。不确定您是否可以重置所选答案,但确定。奖励奖金与接受答案是分开的。平心而论,OP应该邀请您将其添加为答案,而不是自己发布。因为他们提供了赏金,而你是找到正确解决方案的人,你的答案应该得到赏金,但这完全取决于OP。