小编Dom*_*nic的帖子

将数据作为对象与数组存储在 MongoDb 中以提高写入性能

考虑到写入速度,我应该将对象存储在数组中还是存储在最重要的对象中?


我正在尝试决定是将数据存储为对象数组,还是在 mongodb 文档中使用嵌套对象。

在这种特殊情况下,我会跟踪我添加和更新的一组不断更新的文件,文件名充当键以及文件中处理的行数。

该文件看起来像这样

{
  t_id:1220,
  some-other-info: {}, // there's other info here not updated frequently
  files: {
    log1-txt: {filename:"log1.txt",numlines:233,filesize:19928},
    log2-txt: {filename:"log2.txt",numlines:2,filesize:843}
  }
}
Run Code Online (Sandbox Code Playgroud)

或这个

{
  t_id:1220,
  some-other-info: {},
  files:[
    {filename:"log1.txt",numlines:233,filesize:19928},
    {filename:"log2.txt",numlines:2,filesize:843}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我假设处理一个文档,尤其是涉及到更新的时候,处理对象更容易,因为对象的位置可以通过名称来确定;与数组不同,在数组中我必须查看每个对象的值,直到找到匹配项。

因为对象键会有句点,我需要转换(或删除)句点以创建有效的键(fi.le.logtofilelogfi-le-log)。我不担心文件可能出现的重复名称(例如fi.le.logfi-le.log),所以我更喜欢使用对象,因为文件数量相对较少,但更新频繁。

或者最好在单独的集合中处理这些数据以获得最佳写入性能......

{
    "_id": ObjectId('56d9f1202d777d9806000003'),"t_id": "1220","filename": "log1.txt","filesize": 1843,"numlines": 554
},
{
    "_id": ObjectId('56d9f1392d777d9806000004'),"t_id": "1220","filename": "log2.txt","filesize": 5231,"numlines": 3027
}
Run Code Online (Sandbox Code Playgroud)

javascript mongodb

7
推荐指数
1
解决办法
3110
查看次数

如何使用babel/register忽略非js文件

当我的节点应用程序包含来自我的应用程序的路由时,我想忽略非js文件,例如

import './scss/App.scss' // i.e via Router.js -> Routes.js -> App.js
Run Code Online (Sandbox Code Playgroud)

目前Node正在尝试解析scss错误,因为它试图将scss解析为js.babel hook目前看起来像这样:

require('babel/register')({
    stage: 0
});
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能让babel忽略它们?谢谢

javascript node.js babeljs

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

Firebase 3 - ref.getAuth()等效

在Firebase 2中,我能够进行同步检查以查看用户是否已登录,例如:

if (!ref.getAuth()) ..go to login page
else ..show page
Run Code Online (Sandbox Code Playgroud)

我可以访问该currentUser州,firebase.auth().currentUser所以我试图这样做:

if (!firebase.auth().currentUser) ..go to login page
else ..show page
Run Code Online (Sandbox Code Playgroud)

问题是它始终是null,因此它会重定向到登录页面,然后片刻之后onAuthStateChanged会发生并且用户已登录.

还有办法同步检查吗?或者是否有我可以听的承诺,以便我可以展示装载微调器或什么?谢谢.

javascript firebase firebase-authentication

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

在我滚动之前,react-virtualized 列表项不会使用更改的道具重新渲染

我有一个像这样的反应虚拟化列表(使用 List 组件):

renderItem = ({ index, key, style }) => {
  const {
    entries,
    projectId,
  } = this.props;
  const entry = entries[index];

  return (
    <div key={key} style={style}>
      <MyItem
        entry={entry}
        entryIndex={index}
        projectId={projectId}
      />
    </div>
  );
}

<List
  rowHeight={75}
  rowRenderer={this.renderItem}
  rowCount={entries.length}
  width={780}
  height={1000}
/>
Run Code Online (Sandbox Code Playgroud)

MyItem连接到一个 redux store 并且可以交互。但是,在我滚动列表之前,它不会反映屏幕上的任何更改,一旦我滚动,我就会看到列表项,因为它应该与更新一起MyItem's render()被调用。

当道具更改时,如何进行反应虚拟化以重新呈现列表项?

javascript reactjs react-virtualized

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

带有 Typescript = 类型错误的 d3 v5 轴

我有一些代码可以正常工作,但我是 TS 的新手,我认为我可以在某处定义一个类型,然后 d3 的泛型就会起作用?

我有一个xAxisyAxis它们是相同的,但 D3 认为它不喜欢xAxis

// formatAmount(n: number) => string

const xAxisRef = useRef<SVGSVGElement>(null)

const xAxis = useMemo(
  () =>
    axisBottom(xScale).tickFormat(n => '$' + formatAmount(n)),
  [xScale]
)

select(xAxisRef.current).call(xAxis)
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

选择(xAxisRef.current).call(xAxis

“Axis”类型的参数不可分配给“(selection: Selection, ...args: any[]) => void”类型的参数。参数“上下文”和“选择”的类型不兼容。类型“选择”不可分配给类型“选择|” 选择'。类型“选择”不可分配给类型“选择”。属性“select”的类型不兼容。输入 '{ (选择器:字符串):选择;(选择器:空):选择;(选择器: ValueFn<...>): Selection<...>; }' 不可分配给类型 '{(选择器:字符串):选择;(选择器:空):选择;(选择器: ValueFn<...>): Selection<...>; }'。参数“selector”和“selector”的类型不兼容。参数“groups”和“groups”的类型不兼容。类型 '(SVGSVGElement | null)[] | ArrayLike' 不可分配给类型 'SVGSVGElement[] | ArrayLike'. 类型“(SVGSVGElement | null)[]”不可分配给类型“SVGSVGElement[] |” ArrayLike'. 类型“(SVGSVGElement | null)[]”不可分配给类型“SVGSVGElement[]”。类型 'SVGSVGElement | null' 不可分配给类型'SVGSVGElement'。类型“null”不可分配给类型“SVGSVGElement”.ts(2345)

javascript d3.js typescript

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

PHP获取数组中的所有数字/匿名键

我有一个多维数组,我有兴趣获得没有命名键的所有元素(一层深).

Array
{
  ['settings'] {...}
  ['something'] {...}
  [0] {...} // I want this one
  ['something_else'] {...}
  [1] {...} // And this one
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢你的帮助.

php arrays anonymous key

5
推荐指数
1
解决办法
1441
查看次数

如何使用带有React Native的Navigator制作静态底部栏?

我正在使用导航器,该导航器呈现导航栏和场景。

我将Bottom Nav Tray放入了场景(由返回renderScene),因为我不知道该在哪里放置它。

从GIF中可以看到的问题是,也会对重复的内容进行反应,并对底部的条进行动画处理,从而产生怪异的效果。

导航器动画

将A包裹起来NavigatorView这样我就可以将Bottom Nav Tray作为一个兄弟添加,而不会渲染任何东西(似乎Navigator不喜欢被包裹)。

如何拥有不属于过渡动画的静态底部导航栏?谢谢。

javascript react-native

5
推荐指数
1
解决办法
118
查看次数

无法使用 fetch 修改“接受编码”

我正在尝试将Accept-Encoding标头修改为相等,"zip"但是虽然我可以修改或添加其他标头,但忽略了这个标头。请看例子:

function printResponse(res) {
  const formatedRes = JSON.stringify(res, null, 4);
  document.getElementById('response')
    .innerHTML = formatedRes;
}

fetch('https://httpbin.org/headers', {
  headers: new Headers({
    'Accept-Encoding': 'no-difference',
    'Something-Else': 'works fine',
    'Content-Type': 'application/works-wtf'
  }),
})
.then(r => r.json())
.then(printResponse);
Run Code Online (Sandbox Code Playgroud)
#response {
  white-space: pre;  
}
Run Code Online (Sandbox Code Playgroud)
<div id="response"></div>
Run Code Online (Sandbox Code Playgroud)

我该如何修改它?谢谢

javascript fetch

5
推荐指数
0
解决办法
2132
查看次数

谷歌翻译单个帖子的字符数限制

我在非官方评论中看到有5000个字符的限制。在单个请求中,我发送了一个要翻译的字符串数组,其总数可能超出此限制。还不清楚此限制是否适用于数组中的单个项目或总数。

我需要知道如果存在限制,是否必须修改我的逻辑来批量处理这些请求,但我在文档中找不到相关信息,包括在https://cloud.google.com/translate/quotas下

google-api google-translate google-cloud-platform

5
推荐指数
1
解决办法
4499
查看次数

如何在Vue中转发$ refs

我有一个组件应将所有内容传递给孩子。我成功通过$attrs$listeners已经:

<template>
  <el-form v-on="$listeners" v-bind="$attrs" :label-position="labelPosition">
    <slot />
  </el-form>
</template>
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何$refs像在React中一样进行转发,以便在使用这样的组件时:

<el-form-responsive
  class="form"
  :model="formValues"
  status-icon
  :rules="rules"
  ref="form"
  label-width="auto"
  @submit.native.prevent="submitForm"
>
Run Code Online (Sandbox Code Playgroud)

然后this.$refs.form实际上是对孩子的参考<el-form>

我宁愿透明地执行此操作,因为在您将完全相同的道具传递给对象时el-form-responsiveel-form无需知道refs必须以特殊方式传递。

javascript vue.js

5
推荐指数
1
解决办法
58
查看次数