2017-12-15 10 views
-1

'shows'컬렉션의 Firestore 문서에는 "아티스트"와 "날짜"라는 두 개의 필드가 있습니다. "artist"와 "date"필드를 결합한 "name"이라는 새로운 필드를 만드는 가장 좋은 방법은 무엇입니까?Firestore 필드에서 필드 자동 생성

{ 
    "artist": "Pink Floyd", 
    "date": "19650303" 
} 

예를 들어, "artist"= "Pink Floyd"및 "date"= "19650303"이라고합시다. 그런 다음 '이름'은 '19650303_pinkfloyd'여야합니다.

{ 
    "artist": "Pink Floyd", 
    "date": "19650303", 
    "name": "19650303_pinkfloyd" 
} 

나는 HTML의 필드를 결합 할 수 있습니다. 하지만 Firestore 데이터베이스에 저장되어 다른 앱에서 해당 필드를 호출 할 수 있기를 바랍니다. 그리고 "아티스트"또는 "날짜"필드가 변경되면 "이름"필드가 변경되기를 바랍니다.

Google 클라우드 기능이 처리 할 수 ​​있나요?

답변

0

다음은 Google 클라우드 기능에서 작동하도록 작성한 기능입니다. 이 일을 성취 할 수있는 가장 좋은 방법인지 아니면 더 나은 방법으로 해결할 수 있는지를 듣고 싶다.

// new name version that combines two variables in the event data to create a newnamee 
exports.createnewshowname = functions.firestore 
    .document('shows/{showId}') 
    .onWrite(event => { 
    // Get an object representing the document 
    // e.g. {'name': 'pinkfloyd', 'venue': 'stubbs'} 
    var newValue = event.data.data(); 
    // access a particular field as you would any JS property 
    var name = newValue.name; 
    var venue= newValue.venue; 
    var newname = name+"_" +venue 
    // You must return a Promise when performing asynchronous tasks inside a Functions such as 
    // writing to the Firebase Realtime Database. 
    // Setting an "uppercase" sibling in the Realtime Database returns a Promise. 
    return event.data.ref.set({ 
     newname: newname 
    }, {merge: true}); 
    });