2017-05-31 61 views
0

我有一個樣式(服裝)模型和圖像模型和一對多樣式< =圖像的關係。更新關係將覆蓋所有的關係,而且最新的記錄

我有一個jQuery的Cloudinary部件上傳圖片,然後我試圖更新的URL圖像的圖像關係。然後打算將這些圖像顯示在表格中。

然而,當我用我的代碼更新的關係,它不僅節省了對關係的最新StyleCode。

所以,如果我救一個圖像,然後又一個,圖像表雲從這個:

Image URL   Style 
http://abc  1234 

這個

Image URL   Style 
http://abc  <blank> 
http://xyz  1234 

我的第一個問題是,如何將關係實際工作?它似乎依靠我的StyleCode保持記錄關係。我會認爲它會被_key .....?

其次,你有沒有什麼可以在我的代碼,發現這可能是覆蓋以前的StyleCode?

服務器端代碼

function saveImageToStyle(images, styleCode) { 
    var imgs = []; 
    images.forEach(function(image) 
    { 
    var imageRecord = app.models.Images.newRecord(); 
    imageRecord.ThumbnailURL = image.thumbnail_url; 
    imageRecord.ImageURL = image.url; 
    imageRecord.Path = image.path; 
    imageRecord.ImageName = image.original_filename; 
    imgs.push(imageRecord); 
    }); 
    app.saveRecords(imgs); 
    var query = app.models.Styles.newQuery(); 
    query.filters.StyleCode._equals = styleCode; // is it this??? 
    var styleRecord = query.run()[0]; 
    styleRecord.Images = imgs; 
    app.saveRecords([styleRecord]); 
} 

客戶端代碼

function saveStyleImages(images) { 
    var styleCode = app.datasources.Styles.item.StyleCode; // is there a better way to get the current StyleCode? 
    var status = app.pages.StyleEdit.descendants.Status; 
    google.script.run 
    .withFailureHandler(function(error) { 
    status.text = error.message; 
    }) 
    .withSuccessHandler(function(result) { 
    status.text = images + "success"; 
    }) 
    .saveImageToStyle(images, styleCode); 
} 

回答

0

下面一行替換所有現有的樣式協會: styleRecord.Images = IMGS; 您可以將其替換爲: styleRecord.Images = styleRecord.Images.concat(imgs);

+0

謝謝!我styleRecord.Images.push做到了(IMGS):) – Samuurai

+0

從谷歌員工的官員說,修復你需要做的是這樣的: 爲(VAR I = 0; I Samuurai

1

貌似可以在客戶端上做的一切(如果你沒有任何限制與您的安全模式):

function addStyleImage(newImage) { 
    var newImageDs = app.datasources.Styles.relation.Images.modes.create; 
    var newImage = newImageDs.item; 

    newImage.ThumbnailURL = image.thumbnail_url; 
    newImage.ImageURL = image.url; 
    newImage.Path = image.path; 
    newImage.ImageName = image.original_filename; 

    newImageDs.createItem(function(record) { 
    // do smth with new record 
    }); 
} 

使用此方法,您將立即在客戶端看到新圖像(如果Images關係綁定到表/列表/網格)。

瞭解更多:

https://developers.google.com/appmaker/models/datasources#create_mode_datasource

+0

從來不知道我可以在客戶端做到這一切。將嘗試!謝謝! – Samuurai

+0

非常歡迎您!如果它能幫助你的上午同志,請不要忘記接受答案。 –