I followed this tutorial for creating server side rendered app. The error occurs when I try to serve the app using npm run serve:ssr.
The error I get is:
proxyRequestMethods(Index, '_index', IDBIndex, [
^
ReferenceError: IDBIndex is not defined
at Module.<anonymous> (C:\Users\eg\dist\server.js:343794:38)
at __webpack_require__ (C:\Users\eg\dist\server.js:30:30)
at Module.<anonymous> (C:\Users\eg\dist\server.js:342436:61)
at __webpack_require__ (C:\Users\eg\dist\server.js:30:30)
at Module.<anonymous> (C:\Users\eg\dist\server.js:341227:81)
at __webpack_require__ (C:\Users\eg\dist\server.js:30:30)
at Module.<anonymous> (C:\Users\eg\dist\server.js:332069:79)
at __webpack_require__ (C:\Users\eg\dist\server.js:30:30)
at Object.firebase (C:\Users\eg\dist\server.js:189647:18)
at __webpack_require__ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 firebase 实时数据库对数据进行排序和过滤。在一种情况下,我想使用 OrderByKey(因为我想要先提出新问题,并且使用推送功能生成密钥)来对数据进行排序,在另一种情况下,我使用 OrderByChild(因为我想使用时间戳进行排序,在这种情况下我不这样做) t 使用 push 但我使用用户的 uid 作为键)。
在这两种情况下,我首先想要最新的东西/人(问题/用户),所以我想按降序排序(在客户端我什至颠倒它)。所以这就是我在第一次查询后查询的方式。第一个查询endAt(endAtKey)在下面显示的查询中没有部分。
对于 OrderByKey:
ref.child("questions").orderByKey().endAt(endAtKey).limitToLast(10);
//data at questions node looks like this
{
"-L1CbnCkXJiRT9MKpoP1" : {
"mCorrectAnswer" : 1,
"mOptionA" : "ueud",
"mOptionB" : "h",
"mOptionC" : "h",
"mOptionD" : "h",
"mProblem" : "4shsudududududududurududu"
},
"-L1Dd9x6ws5di2rf8yay" : {
"mCorrectAnswer" : 1,
"mOptionA" : "sh",
"mOptionB" : "shsh",
"mOptionC" : "hehs",
"mOptionD" : "hssh",
"mProblem" : "12ffsnsjsjdbxbddhdbdbddjebddb"
}
Run Code Online (Sandbox Code Playgroud)
对于 OrderByChild:
mDatabaseReference.child("user_list").orderByChild("mTimeStamp")
.endAt(endAtKey).limitToLast(10);
//data at user_list reference looks like this …Run Code Online (Sandbox Code Playgroud) sorting android firebase android-recyclerview firebase-realtime-database
我正在使用角度navigate功能Router。这会导致导航一次,但是会在历史记录中创建两个导航,并且URL会自动更新,其中一部分URL会被剥离,如下所述:
this.router.navigate(['buses','big','bus-details'],queryParamas:{busId:'abc'});然后在第一个导航localhost:4200/buses/big/bus-details?busId=abc中,URL将被更新,但即使在第二秒内也不会更新localhost:4200/buses/big/bus-details,当我单击浏览器的后退按钮时,我被带到了URL,localhost:4200/buses/big/bus-details?busId=abc尽管该ngOnInit()函数在第一次更新到第二次更新时仅被调用一次网址。
我一直在这样导航,但是从来没有问题。我什至检查过该NavigationStart事件仅触发一次。
我正在寻找的是不应进行此URL更新,该怎么做以防止在导航时更新URL?
更新:我观察到仅当通过特定功能模块进行路由时才会发生此错误,但是如果我从“根”路由到该模块,AppModule则不会进行此URL更新,也不会创建两个导航,即,我不需要两次单击“后退”按钮去我称之为导航功能的路径/组件。因此,这似乎是功能模块中的错误,通过该功能模块进行导航,而不是我要导航的组件。
我@angular/fire在我的项目中使用 firebase。为了测试与 firebase 服务的集成,我firebase emulators: start在命令行中运行。在为 angular 应用程序提供服务ng serve --open时,每当我进行更改并保存任何文件时,页面都会重新加载,并且我会自动退出 Firebase 帐户。这仅在使用 Firebase 模拟器时发生。我不知道这是否是@angular/firefirebase auth 模拟器的问题。这非常令人沮丧,因为我需要登录 angular 应用程序中的每个文件更改。
我的 App.module.ts 对提供者有以下配置。每当我登录
providers: [
{
provide: USE_AUTH_EMULATOR,
useValue: environment.useEmulators ? ["localhost", 9099] : undefined,
},
{
provide: USE_DATABASE_EMULATOR,
useValue: environment.useEmulators ? ["localhost", 9000] : undefined,
},
{
provide: USE_FIRESTORE_EMULATOR,
useValue: environment.useEmulators ? ["localhost", 8080] : undefined,
},
{
provide: USE_FUNCTIONS_EMULATOR,
useValue: environment.useEmulators ? ["localhost", 5001] : undefined,
},
],
Run Code Online (Sandbox Code Playgroud)
编辑 1:我通过注入AngularFireAuth …
javascript firebase-tools firebase-authentication angularfire2 angular
我正在从客户端进行批处理操作以仅更新一个字段,但是在进行批处理操作和安全规则测试时发现正在更新多个字段。我使用request.resource.data.size() >1并request.resource.data.keys().size()>1返回true(文档正在更新)检查了这个,但这不是因为我想检查安全规则,只有一个字段正在使用检查更新,request.resource.data.keys().hasOnly(['someFieldToUpdate'])但现在不起作用,以前我记得有writeFields检查但是它现在没有出现在文档中,这个答案也提到了它。那么如何检查现在在批处理操作中实际更新的字段?