Saya sedang mencipta aplikasi menggunakan dokumentasi yang disediakan oleh rangka kerja KeystoneJS. Jadi, dalam apl saya, saya mempunyai dua jadual, satu ialah Pengguna dan satu lagi ialah Siaran. Jadi, saya tertanya-tanya, apabila saya membuat siaran dengan log masuk ke kawasan pentadbir, terdapat medan dengan lajur kunci asing, dan medan itu kosong untuk diisi dengan nilai kunci asing dari jadual pengguna. Jadi, apabila saya mencipta siaran baharu menggunakan id pengguna yang dilog masuk dalam KeystoneJS, saya mahu sistem menambah nilai kunci asing secara automatik kepada pengarang.
Jadi, saya mencari di mana-mana untuk penyelesaian tetapi tidak menemui penyelesaian yang sesuai.
Jika sesiapa mempunyai sebarang idea tentang perkara ini, amatlah dihargai jika anda dapat menjawab soalan ini.
Terima kasih
Pernahkah anda melihat Contoh Blog Terkawal?
Ia mempunyai senarai yang serupa dengan projek anda:
Posts
和Users
,可以是Contributors
或Moderators
。在你的情况下,贡献者/管理员的区别并不重要,你会对Post
列表上的钩子感兴趣,特别是resolveInput.create
Hooks, ia kelihatan seperti ini:Menurut Dokumentasi:
Jadi inilah peluang kami untuk menukar nilai sebelum menyimpan, termasuk mengisi atau memaksa nilai seperti medan
Post.author
anda.
anda tetapi biasanya mengandungi maklumat tentang semasa maklumat pengguna. Dalam contoh ini, jika pengguna log masuk ialah penyumbang, kami mendapatkan ID penyumbang mereka daripadaresolveInput
Mendapat objekcontext
resolveInput
获取context
对象,其中包括对session
对象的引用。该对象的内容由你的会话存储函数决定,但通常包含有关当前用户的信息。在这个示例中,如果登录的用户是贡献者,我们从context.session?.contributor?.id
获取他们的贡献者ID,并将其保存到createdBy
字段。同时,createdAt
, yang termasuk rujukan A kepada objeksession
. Kandungan objek ini ditentukan oleh fungsi stor sesicontext.session?.contributor?.id
dan menyimpannya ke medancreatedBy
. Pada masa yang sama, medancreatedAt
juga ditetapkan kepada tarikh dan masa semasa.resolvedData
对象和钩子想要进行的任何其他更改)。另一种方法是在字段级别添加resolvedData
函数,但这样我们就需要两个单独的函数 - 一个用于createdAt
,另一个用于createdBy
Perhatikan bahawa memandangkan cangkuk ini dikonfigurasikan pada peringkat senarai, ia sepatutnya mengembalikan data untuk keseluruhan item (pada asasnya - setiap fungsi mengembalikan satu nilai. Untuk mendapatkan maklumat lanjut tentang perbezaan ini, lihat Panduan CangkukSelain itu, adalah penting untuk tidak mengelirukan cangkuk dengan Kawalan Akses
senarai.access
- iaitu sama ada penyumbang harus dibenarkan membuat siaran di tempat pertama. Dalam contoh ini, kawalan akses dikonfigurasikan secara berasingan, dalam konfigurasiSatu nota akhir - pada masa penulisan, dokumentasi Hooks API
). Ini hanyalah peningkatan sintaks baru-baru ini, ia tidak mengubah cara cangkuk digunakan. Jika anda hanya menggunakan API dalam dokumentasi, kod di atas boleh ditulis sebagai: 🎜resolveInput
钩子(在列表和字段级别),但没有将其分解为不同的操作(即resolveInput.create
和resolveInput.update
merangkumi