Skip to content

Commit c8b0963

Browse files
Validating object keys in update() (#65)
1 parent 4a02629 commit c8b0963

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

src/document.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,7 +1054,7 @@ class Precondition {
10541054
* @returns {boolean} 'true' when the object is valid.
10551055
* @throws {Error} when the object is invalid.
10561056
*/
1057-
function validateDocumentData(obj, usesPaths, depth) {
1057+
function validateDocumentData(obj, depth) {
10581058
if (!depth) {
10591059
depth = 1;
10601060
} else if (depth > MAX_DEPTH) {
@@ -1070,7 +1070,7 @@ function validateDocumentData(obj, usesPaths, depth) {
10701070
for (let prop in obj) {
10711071
if (obj.hasOwnProperty(prop)) {
10721072
if (isPlainObject(obj[prop])) {
1073-
validateDocumentData(obj[prop], false, depth + 1);
1073+
validateDocumentData(obj[prop], depth + 1);
10741074
}
10751075
}
10761076
}

src/write-batch.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,7 @@ class WriteBatch {
351351
validate.maxNumberOfArguments('update', arguments, 3);
352352

353353
Object.keys(dataOrField).forEach(key => {
354+
validate.isFieldPath(key, key);
354355
updateMap.set(FieldPath.fromArgument(key), dataOrField[key]);
355356
});
356357

test/document.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,13 +1376,11 @@ describe('update document', function() {
13761376
];
13771377

13781378
for (let i = 0; i < invalidFields.length; ++i) {
1379-
try {
1380-
firestore.collection('col').select(invalidFields[i]);
1381-
} catch (err) {
1382-
assert.ok(
1383-
err.message.match(/Argument at index 0 is not a valid FieldPath. .*/)
1384-
);
1385-
}
1379+
assert.throws(() => {
1380+
const doc = {};
1381+
doc[invalidFields[i]] = 'foo';
1382+
firestore.doc('col/doc').update(doc);
1383+
}, /.*Argument ".*" is not a valid FieldPath.*/);
13861384
}
13871385
});
13881386

0 commit comments

Comments
 (0)