2017-12-19 15 views
0

Algolia에서 PartialUpdateObject을 사용하려면 저도 objectID을 알아야합니다. SourceAlgolia에서 objectID 대신 특정 키를 사용하여 부분 업데이트 JSON 객체

그러나 내 경우에는 바로 objectID을 알지 못합니다. 설명해 드리겠습니다 ...

나는 음악가가 음악을 제출할 수있는 음악 사이트를 가지고 있으며 노래 정보로 가득 찬이 JSON은 Algolia의 색인에 저장됩니다. 이제 아티스트는 프로필을 업데이트 할 수도 있습니다 (예 : 아티스트 이름 변경 등). 두 개의 인덱스가 있습니다. 노래 정보가 모두 포함 된 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의 모습입니다. 또한 두 개의 json 파일 사이의 하나의 상수가 AccountInfoID 인 경우 노래에 아티스트와 연결되는 점에 유의하십시오.이 경우에는 명왕성과 다릅니다. 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을 업데이트하려면, 그것은 별거 아니 , 그 아티스트가 업로드 한 모든 노래를 찾을 수 있어야하므로 노래 업데이트가 더 까다 롭습니다. 위에서 언급 한 바와 같이 AccountInfoID: 94으로 모든 노래를 찾아서 objectID을 얻고 노래 JSON에서 Artist을 업데이트해야합니다. 그 일을하는 가장 좋은 방법은 무엇입니까? 아니면 내가 누락 된 쉬운 방법이 있습니까? 나는 송 지수의 아티스트 이름을 업데이트 할 수있는 코드를 어디에 있어요 여기

입니다,하지만 난 예를 들어이 포함 된 송 지수, 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); 
        }