与此[question] [1]相关,我正在尝试进行单元测试时模拟firestore。
我尝试模拟的代码如下所示:
const firestore = admin.firestore();
const users = await firestore.collection('users').get();
Run Code Online (Sandbox Code Playgroud)
而我尝试模拟它的过程如下:
const firestoreStub = sinon.stub();
Object.defineProperty(admin, 'firestore', {
get: () => {
return {
collection: (path) => Promise.resolve({mocka: 'user'})
}
}
});
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用。
我创建了一个仓库(官方功能仓库的克隆),如果有帮助,请在此处给出整个示例。
javascript firebase google-cloud-functions google-cloud-firestore
在Firestore中,如果目标文档不存在,我将不允许阅读。我尝试了以下方法:
service cloud.firestore {
match /databases/{database}/documents {
match /reports/{report} {
allow read: if !exists(/databases/$(database)/documents/reports/{report});
}
}
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,响应为:Missing or insufficient permissions.。
我正在尝试减少角材料步进器组件上的填充,因为我正在开发一个紧凑型:
要删除此处的填充:
在官方的角度材质文档中,他们指出您应该创建一个特定的选择器。我只是不知道该怎么做。我已经尝试过以下方法:
在chrome工具中,我找到了一个CSS类.mat-horizontal-stepper-header。我正在尝试将填充从 24 像素减少到 10 像素,如下所示:
.mat-horizontal-stepper-header {
padding: 14px !important;
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的。我在这里创建了一个Stackblitz来说明问题。
我正在尝试在打字稿项目中配置Jest。
在这里,我们在tsconfig.json中使用路径别名,如下所示:
"baseUrl": ".",
"paths": {
"@eddystone-shared/*": [ "../shared/*" ],
"@eddystone-firebase-helpers/*": [ "src/helpers/firebase-helpers/*" ],
"@eddystone-func-config": ["src/config/config"],
Run Code Online (Sandbox Code Playgroud)
所以他们像这样工作:
我在Jest github中发现,Jest moduleNameMapper是要使用的配置。我试过这样转换:
"moduleNameMapper": {
"^@eddystone-shared/(.*)$": "<rootDir>../shared/$1",
"^@eddystone-firebase-helpers/(.*)$": "<rootDir>/src/helpers/firebase-helpers/$1",
"^@eddystone-func-config/(.*)$": "<rootDir>/src/config/config",
Run Code Online (Sandbox Code Playgroud)
但这行不通。问题是@eddystone-func-config别名。所以我的问题是:如何moduleNameMapper为特定文件创建条目?
我正在为 Angular Material 编写日期适配器,如果提供的对象是 luxon DateTime,则需要一个返回布尔值的函数。
像这样(从那一刻起):
isDateInstance(obj: any): boolean {
return moment.isMoment(obj);
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所拥有的是 - 这是否足够好?:
isDateInstance(obj: any): boolean {
try {
const luxonObject = DateTime.fromObject(obj);
return luxonObject.isValid;
} catch (error) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开始使用 Mongo 中的 Changestream。在我当前的设置中,缝合函数将更改日志事件插入修订集合中。但是,当我从集合中读取数据时,无法转换时间戳字段。我尝试过以下 2 次尝试:
1)管道
[
{
$match: {
'documentKey._id': _id,
},
},
{
$sort: { _id: -1 },
},
{
$addFields: {
convertedDate: { $toDate: 'clusterTime' },
},
},
]
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:Error parsing date string 'clusterTime'; 0: passing a time zone identifier as part of the string is not allowed 'c'; 6: Double timezone specification 'r'
2)bson时间戳类
import { Timestamp } from 'bson';
const asTimestampInstance = new Timestamp(v.clusterTime);
Run Code Online (Sandbox Code Playgroud)
但这里打字稿给了我错误:Expected 2 arguments, but got 1.ts(2554)
index.d.ts(210, 30): …
我的目标是提高 MongoDB 数据库中的数据质量 - 通过使用我的目标是通过使用JSON 模式验证。我们在项目中使用打字稿,并为我们所有的集合提供接口。
\n所以我基本上正在寻找一种有效的方法;
\n转换此接口:
\nimport { ObjectId } from \'mongodb\';\n\nexport interface Category {\n _id: ObjectId;\n date: Date;\n level: string |\xc2\xa0null;\n}\nRun Code Online (Sandbox Code Playgroud)\n进入这个 JSON 模式
\nexport const CategoryJSONSchema = {\n required: [\'_id\', \'date\', \'level\'],\n additionalProperties: false,\n properties: {\n _id: { bsonType: \'objectId\' },\n date: { bsonType: \'date\' },\n level: { oneOf: [{ bsonType: \'null\' }, { bsonType: \'string\' }] }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n 在打字稿中开发 firebase 函数时,我试图让 sourcemaps 工作。
在我的tsconfig.json文件中启用了源映射。
这生成了源映射。然后我将这一行包含在我的index.ts文件中:
import 'source-map-support/register';
Run Code Online (Sandbox Code Playgroud)
然后它似乎工作。这是否正确配置,以及source-map-support项目package.json文件?
如何配置在大屏幕和小屏幕上都很好用的材料 cdk 覆盖位置策略?
我的目标是使用Angular 覆盖 CDK创建一个覆盖,遵循以下规则:
我已经完成了上述一些要求,正如您在此处看到的,定位在具有足够垂直空间(在本例中为 512px)的设备上效果很好:
但是,从下面的 gif 中可以看出,这不适用于垂直空间不足的小型设备(在本例中为 255px)。实际上,正如您从 GIF 中可以看出的那样,在其中两个案例中,它非常接近。位置是正确的,只是高度有偏差。
这里的目标是使用可用空间,如红色所示:
我有一个堆栈闪电战,你可以在这里进行实验。
成分
openPopup(element: any) {
const overlayRef = this.overlay.create({
hasBackdrop: true,
positionStrategy: this.overlay.position()
.flexibleConnectedTo(element)
.withLockedPosition()
.withPositions([
{
panelClass: 'custom-panel1',
originX: 'center',
originY: 'center',
overlayX: 'start',
overlayY: 'top',
},
{
panelClass: 'custom-panel2',
originX: 'center',
originY: 'center',
overlayX: 'start',
overlayY: 'center',
},
{
panelClass: 'custom-panel3',
originX: …Run Code Online (Sandbox Code Playgroud) 我正在为我的 Winston 记录器实现一种漂亮的格式,并且想知道是否可以使用 Node.js 方法console.table来获取“字符串”?
该方法是无效的,但是我可以以某种方式表示字符串吗?
const tableAsString = console.table([{foo: 'bar'}, {foo: 'bar2'}])
// This does not work, table as string is undefined...
Run Code Online (Sandbox Code Playgroud) firebase ×2
mongodb ×2
typescript ×2
angular ×1
angular-cdk ×1
css ×1
javascript ×1
jest ×1
luxon ×1
node.js ×1