来自 promise 的变量在 Bookshelf 上保持不变 save().then()

Variable from promise remains unchanged on Bookshelf save().then()

我有以下代码:

User.forge(req.body)
                .save()
                .then((model) => {
                    model.id = undefined;
                    console.log(JSON.stringify({data: model}));
                    res.json({data: model})
                })

将其打印到控制台:

{"data":{"name":"Test User","username":"test_usr","role_id":1,"id":54}}

为什么即使在 Promise.then 上也不更改 model.id 的值?

您触摸的 id 只是一个方便的属性——它总是被命名为 id,无论真实模型 ID 属性名称是什么。 stringify 使用的模型属性取自模型中的 attributes 对象。

所以您可以直接 model.attributes.id = undefined,但 推荐这种方法,因为它依赖于 Bookshelf 内部结构。

正确的方法是使用 model.set('id', undefined)