【问题标题】:Add key/value pair to returned mongoose object将键/值对添加到返回的 mongoose 对象
【发布时间】:2018-09-14 17:08:27
【问题描述】:

我有检索 Mongoose 对象的代码,然后使用 stripeCustomerId(存储在文档中)检索 Stripe customer 对象(通过 nodejs 条带)。然后我想将条纹 customer 对象附加到我的 Mongoose 对象。

exports.getPlatformByCId = (cId) => {
    return new Promise((resolve, reject) => {
        Platform.find({ clientId: cId }).then(response => {
            let user = response[0];
            stripe.customers.retrieve(user.stripeCustomerId, (err, stripeCust) => {                
                if(err) {
                    user["stripeCustomer"] = null;
                } else {
                    user["stripeCustomer"] = stripeCust;
                }
                resolve(user);
            })
        }).catch(err => {
            if(err) {
                if(err.error !== 'not_found') {
                    resolve(err);
                } else {
                    reject(err);
                }
            }
        })
    })
}

我也尝试过user.stripeCustomer = stripeCust 我正在将猫鼬对象放回它需要去的地方,但stripeCustomer 不是该对象的一部分!我已经验证stripeCust实际上是在返回我期望的数据。

有什么指导吗?我想知道 Schema 是否受到某种保护,也许有一种猫鼬方法可以解决这个问题?

【问题讨论】:

  • user 变量只是数据。用户变量是数组还是对象?
  • 响应是一个数组,我在其中为用户分配响应中的第一个对象。我已经验证用户实际上是一个对象。

标签: javascript node.js mongoose stripe.js


【解决方案1】:

从猫鼬断开对象。进行查询时,使用 mongoose 的 lean() 方法获取 JSON 对象。然后你就可以给它添加密钥了。

http://mongoosejs.com/docs/api.html#query_Query-lean

【讨论】:

  • 谢谢!我不知道猫鼬对象不能像普通对象一样被修改。 :)
  • 有什么办法可以在之后添加key 吗?我正在使用find 来获取Document。但我不能使用lean,因为我想打电话给set。在set 上,我想在doc 的对象版本中添加key - 但不是doc 本身。这可能吗?
  • @user2402616 你可以在返回的猫鼬文档上使用 .toObject()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 2018-08-07
  • 2022-06-29
相关资源
最近更新 更多