为了账号安全,请及时绑定邮箱和手机立即绑定

不确定如何在 AdonisJs 中使用外键保存到数据库

不确定如何在 AdonisJs 中使用外键保存到数据库

哈士奇WWW 2021-11-25 16:41:03
概括我正在创建一个摄影应用程序来帮助摄影师跟踪他们的客户。这是我使用 Adonis.JS 的第一个项目,到目前为止我真的很喜欢它,但被这个问题困住了一段时间,无法在任何地方找到答案。我将分享我的模型、控制器和迁移(可能没有正确创建关系,自从我完成任何后端工作以来已经有一段时间了)工作流:一个用户有很多客户端,一个客户端有很多服务需要能够从用户那里得到服务。我试过的在我的 ServiceController 中保存时,我尝试了以下操作:const user = await auth.getUser();service.fill({   name,   price,   quantity,   due_date});await user.clients().services().save(service);return service;但遗憾的是,我收到了 500 条错误消息:“user.clients(...).services is not a function”这确实有道理,只是不知道还能怎么做。我工作的一种方式是:const clients = await Database.table('clients').select('*').where('user_id', user.id);await Database.table('services')   .insert({      name,      price,      quantity,      due_date: dueDate,      client_id: clients[0].id   });    return service;我只是觉得那个解决方案不正确,考虑到阿多尼斯给了 Lucid,这感觉有点不合时宜,我不确定;但我觉得该查询会在某些时候引起问题。
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

我最终决定我应该只通过主体传递 clientId。


服务控制器:


  async store ({ auth, request, response }) {

    // Get Authenticated user

    const user = await auth.getUser();


    // Retrieve new service from payload

    const { name, price, quantity, dueDate, clientId } = request.all();


    const service = await Service.create({

      name,

      price,

      quantity,

      due_date: dueDate,

      client_id: clientId

    });


    return response.status(200).send(service);

  }


查看完整回答
反对 回复 2021-11-25
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信