NodeJS 将元数据添加到条带客户对象

z5btuh9x  于 2022-11-03  发布在  Node.js
关注(0)|答案(2)|浏览(161)

我正在使用Stripe设置一个支付系统,我想向客户对象添加一些元数据。我想向客户的元数据属性添加我的工作区ID。我尝试了下面的代码,但它返回了以下错误:

⛔️ Error:
 Error: Invalid val: {:_bsontype=>"ObjectID", :id=>"\\HÉ\u001E��\u000F�=��"} must be a string under 500 characters

我已经记录了我添加到这个元数据属性中的工作区ID,但它看起来只是一个普通的mongodb ObjectId。有人能看出我做错了什么吗?

用于将元数据添加到我创建的客户的代码

// find the current User and use his workspace ID
    const user = await User.findOne({ _id: req.userId });
    const workspaceId = user._workspace;

    // get the payment plan
    const plan = await stripe.plans.retrieve('plan_EK1uRUJLJcDS6e');

    //   // then we create a new customer
    const customer = await stripe.customers.create({
      email,
      source,
      metadata: {
        workspace_id: workspaceId
      }
    });

    res.status(200).json({
      message: 'payment complete',
      subscription: adjustedSubscription
    });
flvlnr44

flvlnr441#

您储存在metadata中的值只能是be strings of up to 500 characters。在这种情况下,您会想要将workspaceId剖析为字串。看起来您会想要在ObjectId上执行toString()toHexString()

64jmpszr

64jmpszr2#

我遇到了同样的问题,并找到了保罗的回应。终于工作!

router.post("/create-checkout-session", async (req, res) => {
const customer = await stripe.customers.create({
metadata: {
  userId: req.body.userId.toString(),
  cart: JSON.stringify(req.body.cartItems.toString()),
},

});

相关问题