123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.DBRef = exports.isDBRefLike = void 0;
- var utils_1 = require("./parser/utils");
- /** @internal */
- function isDBRefLike(value) {
- return (utils_1.isObjectLike(value) &&
- value.$id != null &&
- typeof value.$ref === 'string' &&
- (value.$db == null || typeof value.$db === 'string'));
- }
- exports.isDBRefLike = isDBRefLike;
- /**
- * A class representation of the BSON DBRef type.
- * @public
- */
- var DBRef = /** @class */ (function () {
- /**
- * @param collection - the collection name.
- * @param oid - the reference ObjectId.
- * @param db - optional db name, if omitted the reference is local to the current db.
- */
- function DBRef(collection, oid, db, fields) {
- if (!(this instanceof DBRef))
- return new DBRef(collection, oid, db, fields);
- // check if namespace has been provided
- var parts = collection.split('.');
- if (parts.length === 2) {
- db = parts.shift();
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- collection = parts.shift();
- }
- this.collection = collection;
- this.oid = oid;
- this.db = db;
- this.fields = fields || {};
- }
- Object.defineProperty(DBRef.prototype, "namespace", {
- // Property provided for compatibility with the 1.x parser
- // the 1.x parser used a "namespace" property, while 4.x uses "collection"
- /** @internal */
- get: function () {
- return this.collection;
- },
- set: function (value) {
- this.collection = value;
- },
- enumerable: false,
- configurable: true
- });
- DBRef.prototype.toJSON = function () {
- var o = Object.assign({
- $ref: this.collection,
- $id: this.oid
- }, this.fields);
- if (this.db != null)
- o.$db = this.db;
- return o;
- };
- /** @internal */
- DBRef.prototype.toExtendedJSON = function (options) {
- options = options || {};
- var o = {
- $ref: this.collection,
- $id: this.oid
- };
- if (options.legacy) {
- return o;
- }
- if (this.db)
- o.$db = this.db;
- o = Object.assign(o, this.fields);
- return o;
- };
- /** @internal */
- DBRef.fromExtendedJSON = function (doc) {
- var copy = Object.assign({}, doc);
- delete copy.$ref;
- delete copy.$id;
- delete copy.$db;
- return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
- };
- /** @internal */
- DBRef.prototype[Symbol.for('nodejs.util.inspect.custom')] = function () {
- return this.inspect();
- };
- DBRef.prototype.inspect = function () {
- // NOTE: if OID is an ObjectId class it will just print the oid string.
- var oid = this.oid === undefined || this.oid.toString === undefined ? this.oid : this.oid.toString();
- return "new DBRef(\"" + this.namespace + "\", new ObjectId(\"" + oid + "\")" + (this.db ? ", \"" + this.db + "\"" : '') + ")";
- };
- return DBRef;
- }());
- exports.DBRef = DBRef;
- Object.defineProperty(DBRef.prototype, '_bsontype', { value: 'DBRef' });
- //# sourceMappingURL=db_ref.js.map
|