如何在 Cookie 中存储对象

pet*_*_de 1 javascript cookies vue.js nuxt.js

我在 Nuxt 中有一个应用程序,我想将购物车的内容存储在 cookie 中。为了存储 cookie,我使用cookie-universal-nuxt包。但是,我无法在其中存储“某些”对象。下面是一个例子:

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

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

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

Run Code Online (Sandbox Code Playgroud)

这可以正常工作,没有问题。问题是,它不适用于我的真实物体:

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
Run Code Online (Sandbox Code Playgroud)

所以第二个对象显然没有存储在 cookie 中。知道为什么吗?谢谢!

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

Object {
   age: 41,
   name: "Smith",
   isVip: true,
}
Run Code Online (Sandbox Code Playgroud)

并保存产品:

Object {
   calories: 123, 
   name: "a",
   ...
}
Run Code Online (Sandbox Code Playgroud)

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

Dip*_*hah 7

更新: OP 确认问题出在 cookie 大小上。

可能有多个问题,您能否检查一下它的价值是什么,JSON.stringify(savedProducts)如果您可以在帖子中包含完全字符串化的 savedProducts 也会有所帮助。

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