Firestore пакетная глубокая или мелкая копия? - PullRequest
0 голосов
/ 26 сентября 2018

Допустим, у меня есть следующий код:

let ref1 = db.collection('user').doc('u1')
let ref2 = db.collection('user').doc('u2')

let batch = this.db.batch()
let obj = {foo:'bar'}
batch.set(ref1, obj);
obj.foo = 'not bar anymore'
batch.set(ref2, obj);
batch.commit();

Будет ли Firestore делать глубокую копию obj или мелкую копию?Другими словами, после выполнения запроса и проверки базы данных значение документа 'u1' станет {foo:'bar'} или {foo:'not bar anymore bar'}?

1 Ответ

0 голосов
/ 26 сентября 2018

Объекты DocumentReference полностью неизменны (никогда не меняются), если используются только внешние API.Все, что они действительно делают, это указывают на местоположение документа в Firestore.Вызов set () в пакете ничего не делает для изменения переданной ссылки.

Конечно, вы можете попытаться обратиться к DocumentReference, чтобы изменить его напрямую, поскольку JavaScript допускает такие вещи, но этоне поддерживается использование API.

...