Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript addAssociation上的承诺使用源的旧版本解决_Javascript_Node.js_Orm_Sequelize.js - Fatal编程技术网

Javascript addAssociation上的承诺使用源的旧版本解决

Javascript addAssociation上的承诺使用源的旧版本解决,javascript,node.js,orm,sequelize.js,Javascript,Node.js,Orm,Sequelize.js,我有一个版本控制模式,它在object\u version表中设置object条目的版本 const Object = sequelize.define('object', {}) const ObjectVersion = sequelize.define('object_version', { title: { allowNull: false, type: DataTypes.STRING } }) Object.hasMany(Obje

我有一个版本控制模式,它在
object\u version
表中设置
object
条目的版本

const Object = sequelize.define('object', {})

const ObjectVersion = sequelize.define('object_version', {
    title: {
        allowNull: false,
        type: DataTypes.STRING
    }
})

Object.hasMany(ObjectVersion, { as: 'versions' })
使用,我有一个put路由,在这个简单的示例中,可以通过设置新的
标题来更新现有的
对象
条目,例如通过发送一个包含
{“title”:“new title”}
主体的put请求

当使用通过
hasMany
将对象模型与ObjectVersion模型关联而在我的对象模型上创建的
addVersion
方法时,返回的承诺将通过对象实例解析

问题是,我想在响应中返回objects JSON,但是promise所使用的对象实例不包含刚才添加的版本

在我看来,这似乎是一个疏忽。不需要执行另一个查询。解析
addXyz
操作的承诺后,新关联已保存在数据库中,因此应该可以使用对象的更新版本解析承诺


也许我走错了方向,或者错过了一个更简单的方法来执行添加新关联的更新操作。欢迎任何帮助

在对Slack进行了一次有趣的讨论之后,我意识到模型实例上的
addAssociation
addAssociations
setAssociations
方法将数据库中的现有行与目标连接起来

在我的示例中,
addVersion
方法将现有的
object\u version
行与当前的
version
实例连接起来,并且可以将新行插入数据库

我已经打开了一个公关续集,试图在文档中澄清这一点,因为我跳过了这个。有效的示例可能如下所示:

app.put('object/:id', (req, res) => {
    const id = parseInt(req.params.id, 10)

    Object.findOne({
        where: { id },
        include: [ Object.associations.versions ]
    }).then(object => {
        object.createVersion(req.body).then(version => {
            object.versions.push(version)
            res.send(object)
        })
    })
})
app.put('object/:id', (req, res) => {
    const id = parseInt(req.params.id, 10)

    Object.findOne({
        where: { id },
        include: [ Object.associations.versions ]
    }).then(object => {
        object.createVersion(req.body).then(version => {
            object.versions.push(version)
            res.send(object)
        })
    })
})