我有一个样式(服装)模型和一个图像模型以及一对多样式< =图像关系。
我有一个Cloudinary jQuery小部件来上传图像,然后我尝试使用图像的URL更新Images关系。然后打算在表格中显示这些图像。
但是,当我使用我的代码更新关系时,它只会根据关系保存最新的StyleCode。
因此,如果我保存一个图像,然后保存另一个图像,那么Image表就是这样的:
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 :(得分: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
});
}
使用这种方法,您将立即在客户端上看到新图像(如果图像关系绑定到表/列表/网格)。
了解更多:
https://developers.google.com/appmaker/models/datasources#create_mode_datasource
答案 1 :(得分:0)
以下行替换所有现有的样式关联: styleRecord.Images = imgs; 你可以用以下代替它: styleRecord.Images = styleRecord.Images.concat(imgs);