私はstrapiの初心者で、一般的にはバックエンド開発を行っています。非常に小さなものがどのように機能するかを理解しようとしています。
ユーザーモデル、プロファイルモデル、運賃モデルがあります。
ユーザーはプロファイルを持つことができるので、関係を作成しましたhas and belongs to one
。プロファイルは運賃を持つことができ、私はプロファイルと運賃の間に同じ関係を作成しました。
ここで私が気づいたのは:
クライアントでプロファイルセクションに移動すると、名前、姓、住所などのすべてのプロパティを含めて保存します。ユーザーIDを追加すると、すべてが正常に行われます。
ここでのポイントは、同じプロファイルセクションに運賃入力もあるということです。運賃を特別に保存するボタンを追加するのではなく、プロファイルを保存して運賃を保存することです...
ここで何かすることは可能ですか、それとも私は何か間違ったことをしていますか?
私は毎回プロファイルを照会することなく運賃をより適切に見つけ、整理し、操作できるようにプロファイルごとに運賃を分けていますが、ID ro何かでプロファイルレコードを持っています...
誰かが最善のアプローチを明確に説明できますか?それを正しく達成するにはどうすればよいですか?ありがとう
Form
作成するHTML入力 ネストされたjsonデータ フォームを作成して 出力をテスト
<form action="profiles" method="POST" accept-charset="utf-8">
<input type="text" name="name" value="MyProfileName" />
<input type="text" name="fare[name]" value="MyProfileFareName" />
</form>
parameters
の解析パラメータはバックエンドから次のように受信されます
name=MyProfileName&fare[name]=MyProfileFareName
コントローラは上記のパラメータをjson
として解析します
{
'profile' => {
'name' => 'MyProfileName',
'fare' => {
'name' => 'MyProfileFareName',
}
}
}
create
またはupdate
アクションコントローラーは、受け取ったパラメーターを使用してデータベースモデルを更新する必要があります。 add
内にedit
を永続化するmodel
およびdatabase
メソッドは、service
sオブジェクト内で(コントローラー内ではなく)定義されます。コントローラの責任は、これらのメソッドを呼び出すことだけです。
parameters
のbody
からrequest
を取得できます。 request
オブジェクトはコントローラー内で使用できます ctx.request
As この例ではcreate
アクション .add
メソッド(category
サービスクラス から。 api docs については説明がないため、 githubの例 に従う必要があります。
module.exports = {
// POST /profiles
create: async (ctx) => {
// use the fare service to add a new entry with value request.body.fare
var profile = strapi.services.profile.add(ctx.request.body)
strapi.services.fare.add(ctx.request.body.fare)
return profile
}
};
Profile
サービスadd
およびedit
メソッドadd
およびedit
メソッドのロジックをよりよく理解するには、githubの例を確認してください。
add: async (values) => {
// Extract values related to relational data.
const relations = _.pick(values, Profile.associations.map(ast => ast.alias));
const data = _.omit(values, Profile.associations.map(ast => ast.alias));
// Create entry with no-relational data.
const entry = await Profile.create(data);
// Create relational data and return the entry.
return Profile.updateRelations({ _id: entry.id, values: relations });
},