2017-12-19 21 views
0

をAlgoliaで使用するには、objectIDを知る必要があります。 SourceAlgoliaでオブジェクトIDの代わりに特定のキーを使用するJSONオブジェクト

しかし、私の状況では、私は直接objectIDのバットを知りません。私は説明しましょう...

私は、アーティストが音楽を提出できる音楽サイトを持っています。このJSONは、歌情報でいっぱいになり、Algoliaのインデックスに格納されます。今、アーティストはプロフィールを更新することもできます(アーティスト名を変更するなど)。私は2つの別々の指標を持っています。 1つはSongと呼ばれ、すべての曲情報を含み、Artistにはアーティスト情報が含まれています。アーティストがプロフィールを編集してアーティスト名を変更すると、この変更を彼のArtistアカウントのJSONと彼がアップロードしたすべての曲に反映させようとしています。 JSONが曲面で更新されなかった場合でも、以前の名前が表示されます。ここで

{ 
    "AccountInfoID": 94, 
    "AccountType": "Artist", 
    "DisplayName": "Unlike Pluto", 
    "ImageURL": "https://ucarecdn.com/81abba2d-7966-48ac-abab-79a2ecc97811/", 
    "UserID": "", 
    "objectID": "94" 
} 

Song JSONは次のようになります。ここでは

Artist JSONは次のようになります。また、2つのjsonファイル間の1つの定数がAccountInfoIDであることに注意してください。これはアーティストに曲をリンクします。この場合はPlutoとは異なります。 SongobjectIDは異なります。そして、私は別の曲をアップロードした場合、以下のすべての値がAccountInfoID除く異なるだろう(ただ明確にする):しかし

dynamic registerArtistObjs = new JObject(); 
registerArtistObjs.DisplayName = accountInfo.DisplayName; 
registerArtistObjs.ImageURL = accountInfo.ImageURL; 
registerArtistObjs.objectID = accountInfo.AccountInfoID; 
var artistIndexHelper = HttpContext.Application.Get("ArtistIndexHelper") as IndexHelper<ArtistAlgoliaModel>; 
artistIndexHelper.PartialUpdateObject(registerArtistObjs); 

{ 
    "ApprovalFL": true, 
    "FreeFL": true, 
    "LicenseFL": true, 
    "AccountInfoID": 94, 
    "AlbumID": 117, 
    "SongID": 105, 
    "BPM": 92, 
    "AccountImageURL": "https://ucarecdn.com/81abba2d-7966-48ac-abab-79a2ecc97811/", 
    "AccountType": "Artist", 
    "AlbumName": "Let It Bleed", 
    "Artist": "Unlike Pluto", 
    "FeaturedArtist": "Cristina Gatti", 
    "ImageURL": "https://ucarecdn.com/d60c9302-eacf-4050-920d-9d54ce93cd46/", 
    "iTunesURL": null, 
    "LabelName": "Lowly Palace", 
    "Title": "Let It Bleed", 
    "URL": "https://ucarecdn.com/b75e6e30-7082-49e5-b5d5-93d23e74af21/", 
    "UserID": "", 
    "UploadDate": "2017-12-16T01:55:22.81", 
    "Duration": "2017-12-16T00:03:20", 
    "objectID": "105" 
} 

アーティストJSONを更新するには、それは大したことありません、私はそのアーティストによってアップロードされたすべての曲を見つけることができるようにする必要があるので、曲の更新は厄介です。上記のように、私はobjectIDと更新Artistを得ることができるように、すべての曲をAccountInfoID: 94で見つける必要があります。それを行うための最善のアプローチは何ですか?あるいは私が紛失しているより簡単な方法はありますか?

ここで私は歌のインデックスにアーティスト名を更新するためのコードとによどこだが、私には、例えば、含まれているソングインデックス、AccountInfo: 94からすべてのobjectIDの値を取得する方法について見当もつかない:

dynamic registerSongObjs = new JObject(); 
registerSongObjs.Artist = accountInfo.DisplayName; 
registerSongObjs.objectID = ??????????Possibly Multiple values????????? 
var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>; 
songIndexHelper.PartialUpdateObject(registerSongObjs); 
+0

@mjwills: –

答えて

0

は、私は次の操作を行って、それを把握することができました)。私はそれにあなたに合ったものとしてマークします。この質問の考えは?
0

あなたが述べたように、あなたは "そのアーティストによってアップロードされたすべての曲を見つけることができる必要があります"。

あなたはこれを追跡しているとすれば(あなたのウェブサイトは何らかのデータベースに依存している必要があると仮定します)、アーティストが更新されると、そのアーティストの関連するsongIDをすべて取得し、あなたはアルゴリアの終わりを更新する必要があります。みかん、私が助けた私達の元の質問に、あなたの第三の方法を用いて同様の方法を(見つけ...それがなかった、ちょっともう一度

dynamic registerSongObjs = new JObject(); 
var songs = EntityDataAccess.GetSongsByAccountInfoID(accountInfo.AccountInfoID); 
        foreach (var item in songs) 
        { 
         registerSongObjs.Artist = accountInfo.DisplayName; 
         registerSongObjs.objectID = item.SongID; 
         songIndexHelper.PartialUpdateObject(registerSongObjs); 
        } 
関連する問題