Example #1
0
MongoStore.prototype.fRead = function(s,fCallback){
	if (nsTypes.fbIsArray(s)){
		s = s.join('/');
	}

	var aFilter     = {};
	var aQuery      = {key: s};

	I("MongoStore","fRead","reading",	this.sCollection,	aQuery,	aFilter);

	var store = this;
	this.mongo.fFind(
		this.sCollection, aQuery, aFilter,
		function(err,vax){
			if (err){
				W("MongoStore","fRead","find error",err);
			}

			if (vax.length !== 1){
				return fCallback(true);
			}

			var xOut = store.fxMongoUnClean(vax[0].val);
			fCallback(null,xOut);
		}
	);
};
Example #2
0
MongoStore.prototype.fDelete = function(s,fCallback){
	if (nsTypes.fbIsArray(s)){
		s = s.join('/');
	}

	var aQuery      = {key: s};

	I("MongoStore","fDelete","deleting",	this.sCollection, aQuery);

	this.mongo.fRemove(
		this.sCollection,
		aQuery,
		{},
		fCallback
	);
};
Example #3
0
ns.fxGetTreePath = function(a,sPath,xDefault){
	var vs = sPath.replace(']','').split(/([.\[])/);

	if (vs.length === 1 && vs[0] === ""){
		fThrow("bad path " + sPath);
	}

	for (var n=0, c=vs.length; n<c; n+=2){
		if (
			!((nsTypes.fbIsObject(a)) || (nsTypes.fbIsArray(a))) 
				|| a[vs[n]] === undefined
		){
			return xDefault;
		}
		a=a[vs[n]];
	}
	return a;
};
Example #4
0
MongoStore.prototype.fWrite = function(s,x,fCallback){
	if (nsTypes.fbIsArray(s)){
		s = s.join('/');
	}

	x           = this.fxMongoClean(x);
	var aQuery  = {key: s};
	var aUpsert = {key: s, val: x};

	I("MongoStore","fWrite","writing]",	this.sCollection,	aQuery,	aUpsert);

	this.mongo.fUpdate(
		this.sCollection,
		aQuery,
		aUpsert,
		{upsert:true},
		fCallback
	);
};
Example #5
0
	var fxCopyInner = function(x, axCopyTable){
		if (typeof x !== "object" || x === null || x instanceof RegExp){
			return x;
		}

		if (x[sCopyMarker]){
			return vxCopyTable[x[sCopyMarker]];
		}

		if (nsTypes.fbIsArray(x)){
			var v=[];
			x[sCopyMarker] = vxCopyTable.length;
			vxCopyTable.push(v);

			var c=x.length;
			for (var n=0; n<c; n++){
				v[n] = fxCopyInner(x[n], axCopyTable);
			}

			return v;
		}
		else{
			try {
				var oCopy = nsClasses.foInsantiate(x);
				x[sCopyMarker] = vxCopyTable.length;
				vxCopyTable.push(oCopy);
				for (var s in x) {
					if(x.hasOwnProperty(s) && s !== sCopyMarker){
						oCopy[s] = fxCopyInner(x[s], axCopyTable);
					}
				} 
				return oCopy;
			}
			catch(e){
				// uncopyable
				return {};
			}
		}
	};
Example #6
0
	var fStripCopyMarker = function(x){
		if (typeof (x) !== "object" || x === null) {
			return;
		}

		if (!x.hasOwnProperty(sCopyMarker)){
			return;
		}

		delete x[sCopyMarker];

		if (nsTypes.fbIsArray(x)){
			for (var n=0, c=x.length; n<c; n++){
				fStripCopyMarker(x[n]);
			}
		}
		else{
			for (var s in x) {
				if(x.hasOwnProperty(s)){
					fStripCopyMarker(x[s]);
				}
			} 
		}
	};