考虑到写入速度,我应该将对象存储在数组中还是存储在最重要的对象中?
我正在尝试决定是将数据存储为对象数组,还是在 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.logtofilelog或fi-le-log)。我不担心文件可能出现的重复名称(例如fi.le.log和fi-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) 当我的节点应用程序包含来自我的应用程序的路由时,我想忽略非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忽略它们?谢谢
在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会发生并且用户已登录.
还有办法同步检查吗?或者是否有我可以听的承诺,以便我可以展示装载微调器或什么?谢谢.
我有一个像这样的反应虚拟化列表(使用 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()被调用。
当道具更改时,如何进行反应虚拟化以重新呈现列表项?
我有一些代码可以正常工作,但我是 TS 的新手,我认为我可以在某处定义一个类型,然后 d3 的泛型就会起作用?
我有一个xAxis和yAxis它们是相同的,但 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)
我有一个多维数组,我有兴趣获得没有命名键的所有元素(一层深).
即
Array
{
['settings'] {...}
['something'] {...}
[0] {...} // I want this one
['something_else'] {...}
[1] {...} // And this one
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢你的帮助.
我将Bottom Nav Tray放入了场景(由返回renderScene),因为我不知道该在哪里放置它。
从GIF中可以看到的问题是,也会对重复的内容进行反应,并对底部的条进行动画处理,从而产生怪异的效果。
将A包裹起来Navigator,View这样我就可以将Bottom Nav Tray作为一个兄弟添加,而不会渲染任何东西(似乎Navigator不喜欢被包裹)。
如何拥有不属于过渡动画的静态底部导航栏?谢谢。
我正在尝试将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)
我该如何修改它?谢谢
我在非官方评论中看到有5000个字符的限制。在单个请求中,我发送了一个要翻译的字符串数组,其总数可能超出此限制。还不清楚此限制是否适用于数组中的单个项目或总数。
我需要知道如果存在限制,是否必须修改我的逻辑来批量处理这些请求,但我在文档中找不到相关信息,包括在https://cloud.google.com/translate/quotas下
我有一个组件应将所有内容传递给孩子。我成功通过$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-responsive,el-form无需知道refs必须以特殊方式传递。
javascript ×8
anonymous ×1
arrays ×1
babeljs ×1
d3.js ×1
fetch ×1
firebase ×1
google-api ×1
key ×1
mongodb ×1
node.js ×1
php ×1
react-native ×1
reactjs ×1
typescript ×1
vue.js ×1