首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sequelize -使用创建的第一个表的Id创建多个表

Sequelize -使用创建的第一个表的Id创建多个表
EN

Stack Overflow用户
提问于 2019-11-24 05:34:19
回答 2查看 662关注 0票数 0

我正在做一个使用Express,& Sequelize的项目,遇到了一个问题:

我正在尝试创建一个api路由,只需单击一下按钮,就会在我的'member‘和'memberinstrument’表中创建一行。这些表在我的模型中有一个关联: member 'hasMany‘member & memberinstruments 'belongsTo’member。

这就是我现在所拥有的:

代码语言:javascript
复制
router.post("/api/individual/signup", async (req, res) => {
    try {
        const member = await db.Member.create({
            memberName: req.body.memberName,
            location: `${req.body.city}, ${req.body.state}`,
            profilePicture: req.body.profilePicture,
            UserId: req.user.id
        })
        const memberInstrument = await db.MemberInstrument.create({
            instrument: req.body.instrument,
            MemberId: member.id
        });
        res.json({ member, memberInstrument });
    } catch (error) {
        console.log(error.message);
        res.status(500).send('Sever Error');
    }
})

我正在postman中测试它,它只是说我有一个‘服务器错误’(如果我删除了整个memberInstrument发布部分,就不会发生这种情况),在节点中,我得到“无法读取未定义的属性'id‘”。我知道这一定与尝试创建member的时间有关,然后尝试为memberinstrument获取该成员id,但我不知道如何解决这个问题。

任何帮助都将不胜感激!

(编辑:我注释掉了UserId和MemberId,它成功地发布了。

取消注释UserId会产生相同的错误: UserId是一个可以为空的字段,所以如果我没有定义它,我不知道为什么它会出现服务器错误(或者我必须将它定义为null,但我不知道如何在postman中这样做,因为它来自.user而不是.body

仅取消对MemberId的注释会产生相同的错误)

EN

回答 2

Stack Overflow用户

发布于 2019-11-25 06:51:57

因为我是用Postman来做这件事的,而且不知道如何用它发送req.body,所以我收到了id错误。我将req.user.id更改为req.body.id,它将填充来自前端状态的信息,现在工作正常。

票数 0
EN

Stack Overflow用户

发布于 2020-01-18 11:26:31

我认为您没有必要在.create()中包含所有字段

尝尝这个

代码语言:javascript
复制
router.post("/api/individual/signup", async (req, res) => {
try {
  const data = req.body;
  const member = await db.Member.create(data);
  const [registration, created] = member;
  if(created){
    //insert more of your code here on creating **MemberInstrument**, this is just a sample.
         await db.MemberInstrument.create(registration.member_id);
  }
  res.json({
    registration,
    created
  });

 } catch (error) {
  console.log(error);
  res.status(500);
  }
}

在邮递员请求时,您将以json格式输入正文或字段,除了ID,邮递员正文中不应包含ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59012491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档