hydrate-mongodb
Version:
An Object Document Mapper (ODM) for MongoDB.
65 lines (64 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var persistenceError_1 = require("./persistenceError");
var Reference = (function () {
function Reference(mapping, _id) {
this.mapping = mapping;
this._id = _id;
if (_id != null) {
this.id = _id.toString();
}
}
Reference.prototype.fetch = function (session, callback) {
if (!this.mapping) {
callback(new persistenceError_1.PersistenceError("Object type is not mapped as an entity."));
return;
}
if (this._id == null) {
callback(new persistenceError_1.PersistenceError("Missing or invalid identifier."));
return;
}
session.getPersister(this.mapping).findOneById(this._id, callback);
};
Reference.prototype.equals = function (other) {
return Reference.areEqual(this, other);
};
Reference.areEqual = function (value1, value2) {
if (value1 == value2)
return true;
if (value1 == null || value2 == null)
return false;
if (Reference.isReference(value1)) {
var mapping1 = value1.mapping;
var id1 = value1._id;
}
else {
var id1 = value1._id;
}
if (Reference.isReference(value2)) {
var mapping2 = value2.mapping;
var id2 = value2._id;
}
else {
var id2 = value2._id;
}
if (mapping1 == null && mapping2 == null)
return false;
if (id1 == null || id2 == null)
return false;
return (mapping1 || mapping2).inheritanceRoot.identity.areEqual(id1, id2);
};
Reference.isReference = function (obj) {
return obj instanceof Reference;
};
Reference.fetch = function (session, obj, callback) {
if (Reference.isReference(obj)) {
obj.fetch(session, callback);
}
else {
callback(null, obj);
}
};
return Reference;
}());
exports.Reference = Reference;