小编Kas*_*tin的帖子

强制nginx发送特定的Content-Type

如何覆盖nginx中的默认Content-Type?目前,当我请求01.dae文件时,有

Content-Type: application/octet-stream;
Run Code Online (Sandbox Code Playgroud)

我希望它成为现实

Content-Type: application/xml;
Run Code Online (Sandbox Code Playgroud)

我试过类似的东西

location ~* \.dae$ {
  types { };
  default_type application/xml;
}
Run Code Online (Sandbox Code Playgroud)

location ~* \.dae$ {
  add_header Content-Type application/xml;
}
Run Code Online (Sandbox Code Playgroud)

但没有任何作用.

content-type nginx http-headers

58
推荐指数
2
解决办法
7万
查看次数

Nuxt.js 中不同子域的不同路由

假设有两个子域为一个 nuxt 实例工作。他们应该有不同的页面结构。例如它可以是:

pages/
  index.vue // technical entry point that has some logic for determining what routes subtree should be used
  subdomain1/
    index.vue // entry point for subdomain1.mysite.com/
    page1.vue // entry point for subdomain1.mysite.com/page1
  subdomain2/
    index.vue // entry point for subdomain2.mysite.com/
    page1.vue // entry point for subdomain2.mysite.com/page1
    page2.vue // entry point for subdomain2.mysite.com/page2
Run Code Online (Sandbox Code Playgroud)

文件夹结构可以不同。目标是能够为不同的子域加载不同的页面。subdomain1.mysite.com/page1必须加载一个文件(例如pages/subdomain1/page1.vue),而subdomain2.mysite.com/page1必须加载另一个文件(例如pages/subdomain2/page2.vue)。

我们可以使用nuxtServerInitaction 来确定子域,所以有一些this.$store.state.ux.subdomain变量是 eiter subdomain1 或 subdomain2。但其余的我不清楚。

是否可以在 nuxt.js 中实现?如果是这样,我想我们应该使用命名视图<nuxt-child :name="subdomain"/>,并extendRoutes以某种方式在nuxt.config.js,但我没能实现它为止。任何帮助,将不胜感激。

routes vue-router nuxt.js

15
推荐指数
1
解决办法
2258
查看次数

在 vuetify 2.0 中的 v-menu 激活器中使用 v-tooltip

如何在 v-menu 激活器中使用 v-tooltip 和 vuetify 2.0?以前它使用slot="activator".

这就是我想要结合的:

<v-menu>
  <template v-slot:activator="{on}">
    <v-btn v-on="on">Menu Trigger</v-btn>
  </template>
  ...list with menu options...
</v-menu>
Run Code Online (Sandbox Code Playgroud)

<v-tooltip v-slot:activator="{on}">
  <v-btn v-on="on">Menu Trigger with Tooltip</v-btn>
  <span>Tooltip Content</span>
</v-tooltip>
Run Code Online (Sandbox Code Playgroud)

现在我尝试将 v-tooltip 粘贴到 v-menu 中,这里的 {on} 会发生什么?

vue.js vuetify.js

14
推荐指数
1
解决办法
5775
查看次数

检查组件是否附加了事件侦听器

假设有一些<Form>组件.它可以通过@cancel附加到它的事件监听器来调用,如果是这种情况,我想显示触发此事件的取消按钮.如果没有@cancel事件,则不应显示取消按钮.

有没有办法检查组件是否附加了事件监听器?

目前我这样做:

<template>
  <form>
    <button v-if="cancelEventPassed" @click="$emit('cancel')">Cancel</button>
  </form>
</template>
Run Code Online (Sandbox Code Playgroud)

并称之为:

<Form :cancelEventPassed="true" @cancel="handle_cancel" />
Run Code Online (Sandbox Code Playgroud)

<Form/>
Run Code Online (Sandbox Code Playgroud)

是否有可能在不使用任何其他属性的情况下实现这一目标cancelEventPassed

javascript vue.js vue-component vuejs2

13
推荐指数
3
解决办法
5206
查看次数

NestJS 使用 .env 和 @nestjs/config 设置 TypeOrm 连接

我正在尝试找到使用 .env 文件设置 NestJS 数据库的最合法方法。也就是说,我想使用@nestjs/configpackage 来导入 .env 变量并在 TypeOrmModule 中使用它们。

看来我需要使用TypeOrmModule.forRootAsync.

我正在尝试这样做:

// app.module.ts

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
    }),
    TypeOrmModule.forRootAsync({
      useClass: TypeOrmConfigService,
    }),
    ...
  ],

})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

然后,有TypeOrmConfigService

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from '@nestjs/typeorm';

@Module({
  imports: [ConfigModule],
})
export class TypeOrmConfigService implements TypeOrmOptionsFactory {
  constructor(private configService: ConfigService) {}

  createTypeOrmOptions(): TypeOrmModuleOptions {
    return {
      type: 'mysql', …
Run Code Online (Sandbox Code Playgroud)

typescript typeorm nestjs dotenv

11
推荐指数
4
解决办法
2万
查看次数

async /等待正确的错误处理

假设我们有一个在用户登录(express,node)上运行的动作.这是使用大量回调编写的代码:

checkIfEmailAndPasswordAreSet(email, password, (error, response) => {
  if (error) return errorResponse(403, 'validation error', error)
  findUserByEmail(email, (error, user) => {
    if (error) return errorResponse(500, 'db error', error)
    if (!user) return errorResponse(403, 'user not found')
    checkUserPassword(user, password, (error, result) => {
      if (error) return errorResponse(500, 'bcrypt error', error)
      if (!result) return errorResponse(403, 'incorrect password')
      updateUserLastLoggedIn(user, (error, response) => {
        if (error) return errorResponse(500, 'db error', error)      
        generateSessionToken(user, (error, token) => {
          if (error) return errorResponse(500, 'jwt error', error)
          return successResponse(user, token)
        }) …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling node.js async-await sequelize.js

9
推荐指数
1
解决办法
1984
查看次数

VS Code:如何打开 settings.json 文件?

我做了很多次,每次都忘记它在哪里。

文件 -> 首选项 -> 设置。

我明白了:

在此处输入图片说明

我想打开 settings.json (只是可编辑的 txt 文件)。怎么做?

visual-studio-code vscode-settings

9
推荐指数
6
解决办法
4135
查看次数

在 Node 14 中使用 sequelize-cli 类型:module

我正在尝试使用Node v14.3和来设置项目sequelize

我不想使用babel-register. 而不是我"type": "module"在我的设置中设置package.json并使用所有 ES6 - ES11 开箱即用的功能。

我还想sequelize-cli用于设置和应用迁移。除了以下命令外,一切正常:

& sequelize db:migrate

Sequelize CLI [Node: 14.3.0, CLI: 5.5.1, ORM: 5.21.11]

Loaded configuration file "config/config.json".
Using environment "development".
== 20200530214311-create-user: migrating =======

ERROR: Must use import to load ES Module: /home/kasheftin/work/tests/chai-http-publication/migrations/20200530214311-create-user.js
require() of ES modules is not supported.
require() of /home/kasheftin/work/tests/chai-http-publication/migrations/20200530214311-create-user.js from /home/kasheftin/.nvm/versions/node/v14.3.0/lib/node_modules/sequelize-cli/node_modules/umzug/lib/migration.js is an ES module file as it is a .js file whose nearest parent package.json …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js sequelize-cli es6-modules

8
推荐指数
1
解决办法
1823
查看次数

谷歌地图上的大量移动标记

我在谷歌地图上有大约200个标记.这并不是那么多,使用默认的google.maps.Marker工厂绘制它们的速度相对较快.

但在我的情况下,每个标记都会不断改变它的位置,所以我必须为它们设置动画,我必须在每个标记后绘制轨迹.其他条件是所有标记都位于约20x20km的小区域内.

这就是为什么我要使用一个大的画布层并在一个循环中重绘它们上的所有标记.我在这里看到三种方式.

  1. 首先是使用google.maps.OverlayView.我们创建绝对定位的canvas元素并将其添加到google.maps窗格overlayLayer.在bounds_changed事件的情况下,我们重新计算画布的位置和大小,并重绘其上的所有标记. 实际上这有点慢 - 如果我们拖动地图太快,则会出现重绘标记的延迟.

  2. 我们使用相对定位的画布而不是绝对定位.之后我们不对bounds_changed事件做任何事情,只在zoom_changed事件上重绘画布. 拖动没有滞后(因为我们拖动画布本身),但是我们必须计算并创建包含所有标记的画布,并且对于最大缩放,它大约是5000x5000px(大量内存).

  3. 我们根本不使用OverlayView,而不是这个,我们只是将一个外部画布悬停在整个地图上,并在bounds_changed事件上重绘标记. 这里我们不会重新计算画布的位置和大小,因此速度要快一些,但在控件下方和tile图层上添加画布似乎很棘手,因此地图移动不会影响它.

那你喜欢什么方式?

UPD.唯一合理的方法是第一个.我花了很多时间来解决涉及这个问题的任务.因此,这里是关于借鉴了很多谷歌的移动地图上的标记(俄语,文章http://habrahabr.ru/post/195950/),并在这里是比较4个不同的引擎演示:HTTP://kasheftin.github .IO/gmaps /

google-maps google-maps-api-3 google-maps-markers

6
推荐指数
0
解决办法
935
查看次数

如何履行承诺

我知道这不是很傻,但如何开始一个承诺链?我有,例如,

var p = new Promise(function(resolve,reject) {
  setTimeout(function() {
    return resolve("Hi from promise after timeout");
  },1000);
});
Run Code Online (Sandbox Code Playgroud)

怎么运行呢?它应该是这样的,

when(p)
.then(function(msg) {
  console.log(msg);
})
.catch(function(error) {
  console.error(error);
});
Run Code Online (Sandbox Code Playgroud)

但是when没有定义.

chaining node.js promise

6
推荐指数
1
解决办法
4480
查看次数