Merge branch 'master' into develop

This commit is contained in:
Barış Soner Uşaklı
2024-12-24 12:37:18 -05:00
4 changed files with 21 additions and 15 deletions

View File

@@ -174,11 +174,12 @@ module.exports = function (module) {
}
const data = {};
fields.forEach((field) => {
fields = fields.map((field) => {
field = helpers.fieldToString(field);
if (field) {
data[field] = 1;
}
return field;
});
const item = await module.client.collection('objects').findOne({ _key: key }, { projection: data });

View File

@@ -23,7 +23,9 @@ helpers.fieldToString = function (field) {
field = field.toString();
}
// if there is a '.' in the field name it inserts subdocument in mongo, replace '.'s with \uff0E
return field.replace(/\./g, '\uff0E');
// replace $ with \uff04 so we can use $ in document fields
return field.replace(/\./g, '\uff0E')
.replace(/\$/g, '\uFF04');
};
helpers.serializeData = function (data) {

View File

@@ -103,7 +103,7 @@ image.size = async function (path) {
};
image.stripEXIF = async function (path) {
if (!meta.config.stripEXIFData || path.endsWith('.svg')) {
if (!meta.config.stripEXIFData || path.endsWith('.gif') || path.endsWith('.svg')) {
return;
}
try {

View File

@@ -155,18 +155,21 @@ describe('Hash methods', () => {
});
});
it('should work for field names with "." in them when they are cached', (done) => {
db.setObjectField('dotObject3', 'my.dot.field', 'foo2', (err) => {
assert.ifError(err);
db.getObject('dotObject3', (err, data) => {
assert.ifError(err);
db.getObjectField('dotObject3', 'my.dot.field', (err, value) => {
assert.ifError(err);
assert.equal(value, 'foo2');
done();
});
});
});
it('should work for field names with "." in them when they are cached', async () => {
await db.setObjectField('dotObject3', 'my.dot.field', 'foo2');
const data = await db.getObject('dotObject3');
assert.strictEqual(data['my.dot.field'], 'foo2');
const value = await db.getObjectField('dotObject3', 'my.dot.field');
assert.equal(value, 'foo2');
});
it('should work for fields that start with $', async () => {
await db.setObjectField('dollarsign', '$someField', 'foo');
assert.strictEqual(await db.getObjectField('dollarsign', '$someField'), 'foo');
assert.strictEqual(await db.isObjectField('dollarsign', '$someField'), true);
assert.strictEqual(await db.isObjectField('dollarsign', '$doesntexist'), false);
await db.deleteObjectField('dollarsign', '$someField');
assert.strictEqual(await db.isObjectField('dollarsign', '$someField'), false);
});
});