Remove the undefined property to avoid mongodb upsert overwrite
This commit is contained in:
parent
8b128b566d
commit
4a907b0a18
20
lib/dao.js
20
lib/dao.js
|
@ -214,25 +214,33 @@ function stillConnecting(dataSource, obj, args) {
|
||||||
* @param {Function} callback The callback function (optional).
|
* @param {Function} callback The callback function (optional).
|
||||||
*/
|
*/
|
||||||
DataAccessObject.upsert = DataAccessObject.updateOrCreate = function upsert(data, callback) {
|
DataAccessObject.upsert = DataAccessObject.updateOrCreate = function upsert(data, callback) {
|
||||||
if (stillConnecting(this.getDataSource(), this, arguments)) return;
|
if (stillConnecting(this.getDataSource(), this, arguments)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var Model = this;
|
var Model = this;
|
||||||
if (!getIdValue(this, data)) return this.create(data, callback);
|
if (!getIdValue(this, data)) {
|
||||||
|
return this.create(data, callback);
|
||||||
|
}
|
||||||
if (this.getDataSource().connector.updateOrCreate) {
|
if (this.getDataSource().connector.updateOrCreate) {
|
||||||
var inst = new Model(data);
|
var inst = new Model(data);
|
||||||
this.getDataSource().connector.updateOrCreate(Model.modelName, inst.toObject(true), function (err, data) {
|
var update = inst.toObject(true);
|
||||||
|
update = removeUndefined(update);
|
||||||
|
this.getDataSource().connector.updateOrCreate(Model.modelName, update, function (err, data) {
|
||||||
var obj;
|
var obj;
|
||||||
if (data) {
|
if (data && !(data instanceof Model)) {
|
||||||
inst._initProperties(data);
|
inst._initProperties(data);
|
||||||
obj = inst;
|
obj = inst;
|
||||||
} else {
|
} else {
|
||||||
obj = null;
|
obj = data;
|
||||||
}
|
}
|
||||||
callback(err, obj);
|
callback(err, obj);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.findById(getIdValue(this, data), function (err, inst) {
|
this.findById(getIdValue(this, data), function (err, inst) {
|
||||||
if (err) return callback(err);
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
if (inst) {
|
if (inst) {
|
||||||
inst.updateAttributes(data, callback);
|
inst.updateAttributes(data, callback);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue