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

概括

我正在创建一个摄影应用程序来帮助摄影师跟踪他们的客户。这是我使用 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,这感觉有点不合时宜,我不确定;但我觉得该查询会在某些时候引起问题。


哈士奇WWW
浏览 116回答 1
1回答

慕少森

我最终决定我应该只通过主体传递 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);  }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript