API を使ってデータをインポートしようとしましたが、推奨されているのはインポーターを使用することのようです。私のデータは、JSON に変換した ListServ の RSS フィードから来ています。
関連するissueを検索したところ、必要なデータ形式は以下のようになっているようです。
"topics": [
{
"id": 1,
"title": "The title",
"pinned": false,
"posts": [
{
"id": 2,
"body": "The body",
"date": "The date",
"author": "username"
}
]
}
]
}
最初の質問:これは json_generic 用の正しい形式でしょうか?
2番目の質問:このインポーターの使用方法について、さらに詳しい情報はありますか?
pfaffman
(Jay Pfaffman)
2
mbox ファイルにアクセスできれば、はるかに簡単になります。
汎用インポートスクリプトは文字通り汎用的なもので、どのようなデータを想定しているかを確認し、コードまたはデータをそれに合わせて変更する必要があります。
重要な部分はここにあります:
mbox ファイルへのアクセス権限がないようです。私は購読者であり、グループのメールの一部しか受信していません。この手順は既に試しました。システムは別のブランチにあり、Discourse を組織に紹介しようとしています。
JSON の構造が正しいか、一部のフィールドを除いて確認していただけますか?
pfaffman
(Jay Pfaffman)
4
一見すると、方向性は正しいようです。ただし、当然ながらフィールド名を正確に設定する必要があります。また、機能させるにはユーザーのインポートも必要です。
API を通じてユーザーを既にインポートしました。今回は運が良かったようです。コンテンツはバリデーションに失敗しており、ローカルの Discourse に JSON ファイルを送信するだけでバリデーションを無効化できないようです。
各投稿は、おそらく Discourse から userId を取得する必要があるでしょう。この理解で合っていますか?それとも別のアプローチがあるでしょうか?
pfaffman
(Jay Pfaffman)
6
最初からやり直して、スクリプトでユーザーを作成することをお勧めします。ユーザーの照会を行うには、ユーザーのカスタムフィールドにインポートIDが必要です。
ユーザーを再作成する必要があるため、この方法で問題ありませんか。この例では、ユーザー1(John Doe)がトピック1「The Title」を作成し、このトピックにはJohn Doeによる1件の投稿(本文は「Body」)が含まれています。
これが正しい場合、json_generic スクリプトを使用してプロセスを開始するにはどうすればよいでしょうか。次の手順について少し混乱しています。
"topics": [
{
"id": 1,
"user_id": "1",
"title": "The title",
"pinned": false,
"posts": [
{
"id": 2,
"user_id": "1",
"body": "The body",
"date": "The date",
"author": "username"
}
]
}
],
"users": [
{
"id": "1",
"name": "John Doe",
"email": "John_Doe@wahoo.com",
"password": "asfd9!t",
"username": "John Doe",
"active": true,
"approved": true
},
]
}