Javascript promise中的变量在Bookshelf save()上保持不变。然后()

Javascript promise中的变量在Bookshelf save()上保持不变。然后(),javascript,es6-promise,bookshelf.js,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})

我有以下代码:

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上也不更改model.id的值。那么

您正在触摸的
id
只是一个方便的属性——它总是被命名为
id
,不管真正的model id属性名称是什么。stringify使用的模型属性取自模型中的
属性
对象

因此,您可以只执行
model.attributes.id=undefined
,但不建议使用这种方法,因为它依赖于书架内部

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