来自promise的变量在Bookshelf save()。then()

时间:2017-06-09 13:42:28

标签: javascript es6-promise bookshelf.js

我有以下代码:

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的值?

1 个答案:

答案 0 :(得分:0)

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

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

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