mongodb-use-objectid

0.2.2 • Public • Published

Build Status

mongodb-use-objectid

Replace string ids with objectId. Works for single string ids, simple document objects and deep document objects containing arrays as well

Specification / Usage

const test = require('tape');
const useObjectId = require('../lib/mongodb-use-objectid');
 
test('handles undefined value', t => {
    const result = useObjectId(undefined);
 
    t.equal(result, undefined);
    t.end();
});
 
test('handles simple string id', t => {
    const result = useObjectId('55af3dabd69361923fc86801');
 
    t.equal(result.id.length, 12);
    t.end();
});
 
 
test('handles simple object with _id field', t => {
    const document = {_id: '55af3dabd69361923fc86802'};
    const result = useObjectId(document);
 
    t.equal(result._id.id.length, 12);
    t.end();
});
 
test('handles simple object with given field', t => {
    const document = {type: '55af3dabd69361923fc86803'};
    const result = useObjectId(document, ['type']);
 
    t.equal(result.type.id.length, 12);
    t.end();
});
 
test('handles simple object with multiple given fields', t => {
    const document = {
        _id: '55af3dabd69361923fc86804',
        type: '55af3dabd69361923fc86805'
    };
    const result = useObjectId(document, ['_id', 'type']);
 
    t.equal(result._id.id.length, 12);
    t.equal(result.type.id.length, 12);
    t.end();
});
 
test('handles deep object with multiple given fields', t => {
    const document = {
        _id: '55af3dabd69361923fc86804',
        base: {
            type: '55af3dabd69361923fc86805'
        }
    };
    const result = useObjectId(document, ['_id', 'base.type']);
 
    t.equal(result._id.id.length, 12);
    t.equal(result.base.type.id.length, 12);
    t.end();
});
 
test('handles deep object with multiple given fields and arrays', t => {
    const document = {
        _id: '55af3dabd69361923fc86804',
        types: [{
            baseone: {
                _id: '55af3dabd69361923fc86805'
            }
        }, {
            basetwo: {
                subtypes: [{
                    base: {
                        _id: '55af3dabd69361923fc86805'
                    }
                }]
            }
        }]
    };
    const result = useObjectId(document, ['_id', 'types.baseone._id', 'types.basetwo.subtypes.base._id']);
 
    t.equal(result._id.id.length, 12);
    t.equal(result.types[0].baseone._id.id.length, 12);
    t.equal(result.types[1].basetwo.subtypes[0].base._id.id.length, 12);
    t.end();
});
 
test('should leave other properties as is', t => {
    const document = {
        _id: '55af3dabd69361923fc86804',
        name: 'TestName',
        base: {
            description: 'TestDescription',
            type: '55af3dabd69361923fc86805'
        },
        spec: {
            size: 5,
            items: [
                {name: 'item1'}
            ]
        }
    };
    const result = useObjectId(document, ['_id', 'base.type']);
 
    t.equal(result.name, 'TestName');
    t.equal(result.base.description, 'TestDescription');
    t.equal(result.spec.size, 5);
    t.equal(result.spec.items[0].name, 'item1');
    t.end();
});

Readme

Keywords

Package Sidebar

Install

npm i mongodb-use-objectid

Weekly Downloads

1

Version

0.2.2

License

MIT

Last publish

Collaborators

  • kiwep