这是一个基本问题,但非常重要,我不确定是否真的明白了.
在我们可以阅读的官方文档中
MongoDB将所有最近使用的数据保存在RAM中.如果您为查询创建了索引,并且您的工作数据集适合RAM,则MongoDB将从内存中提供所有查询.
我不确定的部分是
如果已为查询创建索引,并且工作数据集适合RAM
这里的"索引"是什么意思?
例如,如果我更新模型,然后我查询它,因为我已经更新它,它现在在RAM中,所以它将来自内存,但这在我的脑海中不是很清楚.
我们怎样才能确定我们查询的数据是否来自内存?据我所知,MongoDB使用空闲内存来缓存当前可用的内存数据,但有人可以进一步解释全局行为吗?
在哪种情况下,在我们的节点服务器中使用存储数据的变量比信任MongoDB缓存系统更好?
您如何全球建议使用MongoDB进行大量流量?
我想从我收集的集合中对填充的文档进行排序,我收到错误请求它.
让我们承认一个文件Group(组)和'会员'(Group.Members)
Group
.find({})
.populate('Members')
Run Code Online (Sandbox Code Playgroud)
工作完美,但我想排序,所以我这样做:
Group
.find({})
.populate('Members', ['_id', 'name'], null, { sort: [[ 'created_at', 'desc' ]] })
Run Code Online (Sandbox Code Playgroud)
我TypeError: Invalid select() argument. Must be a string or object.通过添加这个错误得到错误...
我试图测试我的传奇可以遵循的每个场景,但我无法实现我想要的行为.这很简单,我有一个HTTP请求(登录),我想通过模拟我的API方法来测试成功和失败的情况.
但是,它看起来call effect不会激活我的api功能,我还没有真正得到它是如何工作的,但我想中间件是负责调用该功能,因为我不去通过商店我的测试,我无法得到结果.
所以我的问题是,当您需要在异步调用旁边发送不同的操作(通常是成功或失败)时,如何测试您的传奇?
我找了一个例子,我发现sagas成功并失败但是失败案例从未经过测试,例如在这里的购物车示例中
SAGA.JS
export function* login(action) {
try {
const user = yield call(api.login, action);
return yield put(actions.loginSuccess(user));
} catch(e) {
yield put(actions.loginFail(e));
}
}
export default function* rootAuthenticationSagas() {
yield* takeLatest(LOGIN, login);
}
Run Code Online (Sandbox Code Playgroud)
TEST.JS
describe('login', () => {
context('When it fails', () => {
before('Stub the api', () => {
sinon.stub(api, 'login', () => {
// IT NEVER COMES HERE !
return Promise.reject({ error: 'user not found' });
});
});
it('should return …Run Code Online (Sandbox Code Playgroud) 我正在试图输出简单的html unicode字符,例如♣从表达式输出.
我试图使用ng-bind-html,ng-bind-html-unsafe但我不能让它出现在我的HTML中.
$scope.character = '♣';
<span ng-bind-html="{{character}}"></span>
<span ng-bind-html="♣"></span>,我可以在我的控制台中看到正确解释的HTML字符,但仍未注入进入跨度应答器)如何从表达式输出html字符?
我导入脚本//ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-sanitize.min.js并ngSanitize在我的应用程序中添加依赖项.
在阅读Github上的一些代码后,似乎我误解了这个highWaterMark概念是如何工作的.
在可写流的情况下,尽可能快地写入大量数据,这是我对生命周期的想法:
1)虽然highWaterMark未达到限制,但流能够缓冲和写入数据.
2)如果highWaterMark达到限制,则流不能再缓冲,因此#write方法返回false以告知您尝试写入的内容将不会写入(从不).
3)一旦流发出drain事件,这意味着缓冲区已被清理,您可以从"被拒绝"的位置再次写入.
在我看来这很清楚也很简单,但看起来这并不完全正确(在第2步),当#write方法返回false时,你尝试编写的数据真的被"拒绝"吗?或者是缓冲(或其他)?
对不起基本问题,但我需要确定!
是否可以保存已填充的文档?
我想做:
var Group = new Db['Group']();
for (var i=0; i<50; i++)
Db.Members.push({ User: { _id: "521014731e27b1b008000002"}, pseudo: 'John' });
Group.save();
Run Code Online (Sandbox Code Playgroud)
架构
var GroupSchemaModel = {
Members: [{
User: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
updated_at: { type: Date, required: true, default: Date.now }
}]
};
Run Code Online (Sandbox Code Playgroud)
我收到了错误
{ message: 'Cast to ObjectId failed for value "[object Object]" at path "User"',
name: 'CastError',
type: 'ObjectId',
value: { _id: '521014731e27b1b008000002' },
path: 'User' }
Run Code Online (Sandbox Code Playgroud) 我正在使用会话,我有一个解析请求的cookie的中间件.
我是单元测试我的中间件,但我没有看到如何处理这个(如何插入一个cookie,所以我可以断言它存在于中间件).
我尝试使用该supertest库,在连接socket.io之前调用插入cookie的路由,但是当中间件被触发时cookie不在这里(这是有意义的,因为cookie存储在浏览器中,我的单元测试启动与摩卡).
你知道一种测试这种用例的方法吗?
我在这里有一个关于这个问题的实时代码说明,正如你所看到的,h1 和下面的网格之间没有空间(我期望 12px,因为我要求 24px 的间距)。如果您打开控制台,您可以看到负边距将 Grid 置于 h1 上方,这就是我需要修复的。
我在这里做错了吗?如果我希望 h1 正确应用 24px 间距,正确的修补方法是什么?
我希望我们不必将 h1 封装在 Grid 容器 > Grid 项本身中。
我正在试图在同一个div中垂直对齐3个不同的inline-flex元素,但最后一个不符合预期.
HTML
<div class="container">
<div class="left">
<span>2014/01/21</span>
</div><div class="middle">
<button>Hello</button>
<button>Bye</button>
</div><div class="right">
<ul>
<li>Chocolate</li>
<li>Caramel</li>
<li>Watermelon</li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.container {
height: 100px;
width: 100%;
background-color: blue;
}
.container .left, .container .right {
height: 100%;
width: 30%;
}
.container .middle {
height: 100%;
width: 40%;
}
.container .left, .container .middle {
display: -webkit-inline-flex;
-webkit-justify-content: center;
-webkit-align-items: center;
display: -moz-inline-flex;
-moz-justify-content: center;
-moz-align-items: center;
}
.container .right {
display: -webkit-inline-flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-webkit-box-pack: center; …Run Code Online (Sandbox Code Playgroud) 我正在尝试在本地使用 Kubernetes 运行我的第一个应用程序(或者我应该说 minikube)。
我有一个非常基本的 Web 服务器(一个本地 docker 镜像)和官方 mongodb(我想从 dockerhub 中提取)镜像。
我并不是想部署 mongodb 集群,只是让我的应用程序在本地运行的最低限度的东西将是一个很好的开始!
首先,我成功单独运行我的网络服务器kubectl run <MY_APP> --image=<MY_IMAGE> --port 3030 --image-pull-policy=IfNotPresent,然后kubectl port-forward <MY_POD> 3030:80它工作正常,我可以从 3030 端口访问应用程序(应用程序正在侦听并且容器公开端口 80)。
但我想将其转换为清单文件来描述我需要轻松运行的所有容器。
我的第一个问题是我找不到应该如何kubectl port-forward翻译成清单文件。我正在考虑,targetPort但在尝试时出现验证错误,看起来我们无法targetPort在 pods 容器端口描述中使用。
我的第二个问题是,我不太确定我通过尝试仅通过描述 Pod 来运行该堆栈正在做什么。它可能需要其他部分,service我认为对于我的需要是可选的,我不确定deployment,但我见过一种endpoint,我可以忽略其他的......
我有点困惑,因为kubectl run似乎创建了一个 Pod、一个部署和一个副本集,我不确定是否必须从清单文件创建所有这些。
我只想在本地运行我的两个容器来处理代码并在每次进行更改时刷新它并测试它。
因此,由于我缺乏有关 Kubernetes 的知识,我的问题有一些子问题,但基本上,我想知道如何将我的kubectl run <MY_APP>和转换kubectl port-forward <MY_POD> 3030:80为清单文件,以便我可以添加 mongodb 容器并使用单个kubectl create -f ./local.yaml命令行启动整个堆栈。
这是初稿:
apiVersion: v1 …Run Code Online (Sandbox Code Playgroud) mongodb ×2
mongoose ×2
node.js ×2
angularjs ×1
cookies ×1
css3 ×1
generator ×1
javascript ×1
kubernetes ×1
material-ui ×1
reactjs ×1
redux ×1
redux-saga ×1
socket.io ×1