将键/值对添加到返回的mongoose对象中

11

我有一段代码用于获取Mongoose对象,然后使用存储在文档中的stripeCustomerId以通过nodejs stripe检索Stripecustomer对象。我接下来想将Stripe 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,我获得了 mongoose 对象并将其放在合适的位置,但是stripeCustomer不是该对象的一部分! 我已经验证stripeCust 实际上返回了我所期望的数据。

是否可以提供帮助?我想知道模式是否受到保护,也许有一种 mongoose 的方法可以解决这个问题?


user 变量只是数据。用户变量是数组还是对象? - Randy Casburn
响应是一个数组,在其中我将用户分配给响应中的第一个对象。我已经验证了用户确实是一个对象。 - Dan Orlovsky
1个回答

18

谢谢!我不知道mongoose对象不能像普通对象一样被修改。 :) - Lucas P.
有没有办法事后添加一个key呢?我正在使用find来获取一个Document。但是我不能使用lean,因为我想调用set。在set之后,我想将一个key添加到doc的对象版本中 - 而不是doc本身。这可能吗? - user2402616
2
@user2402616,你可以在返回的Mongoose文档上使用.toObject()方法。 - jc-alvaradov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接