我使用Nodejs Express路由和Mongoose来保存数据.我做了核心路线CRUD操作没有问题.但是,当我尝试在Model的某个字段上执行某些操作然后尝试使用model.save保存Model时,它说的是.save()方法:"undefined不是函数"
所以,这是代码.片段编号(1)工作得很好:
router.put('/:myId', function (req, res, next) {
var ourUpdateData = req.body;
Model.findOne({myId: req.params.myId.toString()}, function (err, foundModel) {
if (err) throw err;
if (ourUpdateData.fieldA) foundModel.fieldA = ourUpdateData.fieldA;
if (ourUpdateData.fieldB) foundModel.fieldB = ourUpdateData.fieldB;
if (ourUpdateData.fieldC) foundModel.fieldC = ourUpdateData.fieldC;
if (ourUpdateData.fieldD) foundModel.fieldD = ourUpdateData.fieldD;
if (typeof ourUpdateData.fieldArray === "object") ourUpdateData.fieldArray = ourUpdateData.fieldArray;
foundModel.save(function (err, updatedModel) {
if (err) throw err;
res.send(updatedmodel);
});
});
Run Code Online (Sandbox Code Playgroud)
});
所以模型有6个字段:fieldA,.. B,.. C,.. D,myId标识为索引,一个字段是一些值的字段fieldArray.上面的例子保存了Model,工作正常.但是,如果我现在尝试使用数组字段fieldArray做一些事情,然后保存模型,当我使用model.save()时,它会抛出"undefined is is a function".所以代码段(2)是产生此错误的代码:
router.get('/:myId/:addThisToFieldArray', function(req, res, next) {
var myId = req.params.myId; …Run Code Online (Sandbox Code Playgroud) Vert.x是一个用于在JVM上构建响应式应用程序的工具包.
我想将vertx用于基于JVM的自动扩展RESTful后端API.
到目前为止我从文档中发现,默认情况下它占用了你机器中的内核数量,假设你有N个内核并为每个内核创建N个线程,每个线程都是一个事件总线,每个线程都包含vertx实例.问题是,Vertx如何控制实例数量?基于负载压力?
关于控制使用给定线程运行的Verticle数量的这个事情我仍然没有得到.请帮忙澄清这件事.假设机器有4个内核,我编写了两个扩展为AbstractVerticle的类:
1)让一个数据库数据检索器(让我们称之为RETRIEVER或"R")
2)另一个让我们说是一些转换器(我们称之为CONVERTER或"C")
现在我使用vertx运行或编译并运行:
$ java -jar retrievever.jar
$ java -jar converter.jar
因此,由于我们有4个内核,因此在启动时Vertx将为每个内核创建4个线程.
问题1:
默认情况下,每个线程中有多少个检索器和转换器实例?我猜这是每个线程的一个实例?对?所以我们总共有4个核心,总共4个猎犬实例和4个实例.转换器?正确?
问题2:
如果随着对RETRIEVER("R")和COVERTER("C")(从1.000到1.000.000呼叫)的调用次数增加而增加负载压力,Vertx将自动管理"R"和"C"实例的数量需要处理增加的系统调用次数?
在stackoverflow上有一个类似问题的问题: 我可以在Vert.x HTTP请求队列上设置容量吗?
Jordan Halterman建议:"还要注意,您可以跨多个Verticle实例扩展HTTP服务器以处理更多请求.在这种情况下,您可以使用静态变量或共享数据来跨实例共享信号量."
问题3:
但是,如何缩放Verticle实例以处理更多请求呢?我在文档中找不到这个.
我很感激提前帮忙!