From eff511858eba9b242fcabe2ae2eb48095ee33378 Mon Sep 17 00:00:00 2001 From: welefen Date: Sat, 18 Jan 2014 04:36:47 +0800 Subject: [PATCH] update --- lib/Extend/Model/AdvModel.class.js | 43 +++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/lib/Extend/Model/AdvModel.class.js b/lib/Extend/Model/AdvModel.class.js index dd4db979..9dcfa0d8 100644 --- a/lib/Extend/Model/AdvModel.class.js +++ b/lib/Extend/Model/AdvModel.class.js @@ -367,6 +367,14 @@ module.exports = Model(function(){ return data; }) }, + /** + * 一对一提交 + * @param {[type]} data [description] + * @param {[type]} value [description] + * @param {[type]} mapOptions [description] + * @param {[type]} parsedOptions [description] + * @return {[type]} [description] + */ _postHasOneRelation: function(data, value, mapOptions, parsedOptions){ var promise = null; var self = this; @@ -392,24 +400,41 @@ module.exports = Model(function(){ _postBelongsToRelation: function(data, value, mapOptions, parsedOptions){ return data; }, + /** + * 一对多提交 + * @param {[type]} data [description] + * @param {[type]} value [description] + * @param {[type]} mapOptions [description] + * @param {[type]} parsedOptions [description] + * @return {[type]} [description] + */ _postHasManyRelation: function(data, value, mapOptions, parsedOptions){ }, + /** + * 多对多提交 + * @param Object data [description] + * @param object value [description] + * @param {[type]} mapOptions [description] + * @param {[type]} parsedOptions [description] + * @return {[type]} [description] + */ _postManyToManyRelation: function(data, value, mapOptions, parsedOptions){ var self = this; - var promise = mapOptions.model.promise; - var rfKey = value.rfKey || (mapOptions.model.getModelName().toLowerCase() + "_id"); - var relationTable = value.rTable || self.getRelationTableName(mapOptions.model); + var model = mapOptions.model; + var promise = model.promise; + var rfKey = value.rfKey || (model.getModelName().toLowerCase() + "_id"); + var relationTable = value.rTable || self.getRelationTableName(model); var where; var type = mapOptions.type; - var relationModel = self.getRelationModel(mapOptions.model); + var mapData = mapOptions.mapData; + var relationModel = self.getRelationModel(model); if (type === DELETE || type === UPDATE) { where = getObject(mapOptions.mapfKey, data[mapOptions.mapKey]); promise = promise.then(function(){ return relationModel.where(where).delete(); }) }; - var mapData = mapOptions.mapData; if (type === ADD || type === UPDATE) { promise = promise.then(function(){ if (!isArray(mapData)) { @@ -426,11 +451,11 @@ module.exports = Model(function(){ }); return relationModel.addAll(postData); }else{ //实体数据 - var unqiueField = mapOptions.model.getUniqueField(firstItem); + var unqiueField = model.getUniqueField(firstItem); if (!unqiueField) { - return getPromise(mapOptions.model.getTableName() + " table has no unqiue field", true); + return getPromise(model.getTableName() + " table has no unqiue field", true); }; - return self._getRalationAddIds(mapData, mapOptions.model, unqiueField).then(function(ids){ + return self._getRalationAddIds(mapData, model, unqiueField).then(function(ids){ var postData = ids.map(function(id){ var key = [mapOptions.mapfKey, rfKey]; var val = [data[mapOptions.mapKey], id]; @@ -459,7 +484,7 @@ module.exports = Model(function(){ return true; }; var where = getObject(unqiueField, value); - var promise = model.where(where).find().then(function(data){ + var promise = model.where(where).field(model.getPk()).find().then(function(data){ if (isEmpty(data)) { return model.add(item).then(function(insertId){ ids.push(insertId);