【问题标题】:Can't create object with relation one-to-many无法创建具有一对多关系的对象
【发布时间】:2019-04-20 12:54:52
【问题描述】:

我是sequelize的新手,所以在完成这项琐碎的任务时遇到了一些麻烦。我有一个数据库定义:

 items.hasMany(images, {as: 'images', foreignKey: 'itemID'});

当我创建这样的项目时......

let result = await db.items.create(
      {
        type: req.body.type,
        name: req.body.name,
        images: [req.body.images]
      },
      {
        include: [ {model: db.images,  as: "images" } ]
      }
    );

...我收到一个错误:

TypeError: instance.set 不是函数

可能是什么问题?还是不是正确的插入方式?

解决方案

问题在于我传递的对象类型。我正在传递 [req.body.images],但它已经是一个数组。所以删除 [] 问题解决了。

感谢所有检查它的人:)

【问题讨论】:

    标签: node.js database sequelize.js


    【解决方案1】:
    let result = await db.items.create([
      {
        type: req.body.type,
        name: req.body.name,
        images: [req.body.images]
      },
      {
        include: [ {model: db.images,  as: "images" } ]
      }
    ]);
    

    create function() 中用 array 包装 args。希望对你有帮助。

    【讨论】:

    • 不幸的是,没有帮助。只是将错误更改为不同的错误:TypeError: this.build(...).save is not a function
    • 我发现它需要为该字段获取自定义设置器。如果我在模型内部创建它 - 错误就会消失。但在那种情况下,我不知道如何从模型设置器手动定位 db.images
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多