File tree Expand file tree Collapse file tree 4 files changed +39
-0
lines changed Expand file tree Collapse file tree 4 files changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ <script setup lang="ts">
2
+ import { collection , doc } from ' firebase/firestore'
3
+ import { ref } from ' vue'
4
+ import { firestoreBind , useCollection } from ' vuefire'
5
+ import { useFirestore } from ' @/firebase'
6
+
7
+ const db = useFirestore ()
8
+ const numbers = useCollection (
9
+ collection (db , ' numbers' ).withConverter <number >({
10
+ toFirestore(n ) {
11
+ return { n }
12
+ },
13
+ fromFirestore(snapshot ) {
14
+ return snapshot .data ().n as number
15
+ },
16
+ })
17
+ )
18
+ </script >
19
+
20
+ <template >
21
+ <p >numbers:</p >
22
+ <ul >
23
+ <li v-for =" num in numbers" >{{ num }}</li >
24
+ </ul >
25
+ </template >
Original file line number Diff line number Diff line change @@ -42,6 +42,12 @@ declare module 'vue-router/auto/routes' {
42
42
Record < never , never > ,
43
43
Record < never , never >
44
44
>
45
+ '/converter-with-number' : RouteRecordInfo <
46
+ '/converter-with-number' ,
47
+ '/converter-with-number' ,
48
+ Record < never , never > ,
49
+ Record < never , never >
50
+ >
45
51
'/nested-collections' : RouteRecordInfo <
46
52
'/nested-collections' ,
47
53
'/nested-collections' ,
Original file line number Diff line number Diff line change @@ -198,6 +198,11 @@ export function bindCollection<T>(
198
198
extraOptions : FirestoreOptions = DEFAULT_OPTIONS
199
199
) {
200
200
const options = Object . assign ( { } , DEFAULT_OPTIONS , extraOptions ) // fill default values
201
+ // a custom converter means we don't need a serializer
202
+ if ( collection . converter ) {
203
+ // @ts -expect-error: FIXME: remove this serialize option
204
+ options . serialize = v => v . data ( )
205
+ }
201
206
const key = 'value'
202
207
if ( ! options . wait ) ops . set ( target , key , [ ] )
203
208
let arrayRef = ref ( options . wait ? [ ] : target [ key ] )
Original file line number Diff line number Diff line change @@ -24,10 +24,13 @@ export function createSnapshot<T = DocumentData>(
24
24
export type FirestoreSerializer = typeof createSnapshot
25
25
26
26
export function extractRefs (
27
+ // FIXME: unknown
27
28
doc : DocumentData ,
28
29
oldDoc : DocumentData | void ,
29
30
subs : Record < string , { path : string ; data : ( ) => DocumentData | null } >
30
31
) : [ DocumentData , Record < string , DocumentReference > ] {
32
+ if ( ! isObject ( doc ) ) return [ doc , { } ]
33
+
31
34
const dataAndRefs : [ DocumentData , Record < string , DocumentReference > ] = [
32
35
{ } ,
33
36
{ } ,
You can’t perform that action at this time.
0 commit comments