与mongoose的循环参考

我有以下代码为mongoose模式 var EstacionSchema = new Schema({ nombre : {type : String, required: true, unique: true} , zona : {type : String, required: true} , rutas : [Ruta] }) mongoose.model('Estacion', EstacionSchema) var RutaSchema = new Schema({ nombre : {type : String, required: true, unique: true, uppercase: true} , estaciones : [Estacion] }) mongoose.model('Ruta', RutaSchema) 但是,当我尝试它显示 ReferenceError: […]

node.js的进程内持久键值存储

我需要在一个node.js应用程序中存储一些元数据。 而不是拿出我自己的文件格式和pipe理该文件,我想使用一个进程内持久性键值存储。 我在看mongodb,但似乎mongodb必须始终运行在外(也就是说,您需要先启动一个mongo服务器,然后在node.js.中连接到它)。我要求无论存储什么东西,它完全存在于node.js过程中 – 或者至less任何外部进程完全由库来pipe理,并在应用程序closures连接时将其杀死。 我并不关心性能,但是支持asynchronousIO到存储以跟上Node的整个asynchronous情况是很好的。 如果商店支持索引,那也不错,因为我肯定会以索引有用的方式查询数据。 我非常确定,'sqlite'对我来说是有效的,除了我不认为它像键值存储一样方便。 理想情况下,我应该能够用JSON说话,而不是SQL。 但是,如果没有更好的存在,sqlite将工作。 谢谢!

如何在node.js中添加新的行字符?

我是node.js的新手,我试图编写一个接收http请求并通过套接字转发内容的程序。 在套接字的另一端是一个寻呼系统,需要以一个新的行字符结尾的消息。 到目前为止,它工作正常,除了有一个额外的消息与内容发送: undefined 。 当我将打印机信息的内容打印到客户端浏览器时,似乎没有新的一行。 我做对了吗? sys = require("sys"), http = require("http"), url = require("url"), path = require("path"), net = require("net"); socket = new net.Socket(); socket.connect(4000, '192.168.0.105'); var httpServer = http.createServer(function(request, response) { var uri = String(url.parse(request.url).query); var message = uri.split("="); var page = 'FPG,101,0,3!A' + message[0] + '\n'; response.writeHead(200, {"Content-Type":"text/html"}); response.write('sending message: ' […]

db-oracle不会刷新数据

我正在使用Node.js工作一个简单的服务。 它接收上传的文件,将它们存储在磁盘上,并在Oracle表上logging一些元数据。 我正在使用db-oracle软件包和连接池一起使用这篇文章: http : //nodejsdb.org/2011/05/connection-pooling-node-db-with-generic-pool/ 但是,我注意到,我插入的数据只在连接池closures空闲连接之后才通过调用disconnect()方法发送到Oracle数据库。 在向客户端发送“OK”信号之前,是否有办法刷新数据? 现在它的工作方式,我的web服务或Oracle本身的崩溃可能会导致数据丢失,我的服务的客户端不会知道它。 实际上,我在一些上传之后通过杀死我的应用进程来testing,数据确实丢失了。 以下是代码的简化版本: var express = require('express'); var app = module.exports = express.createServer(); app.post('/upload', handleUpload); app.listen(4001, function(){ console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); }); function handleUpload(req, res) { res.contentType('application/xml'); var buf = ''; req.on('data', function(chunk) { buf += chunk; }); req.on('end', function() […]

Node.js到Node.js的通信

我如何使用从另一个Node进程加载的其他Node进程的模块。 我运行的例子是: node my_modules 哪个加载MyModule 那么我将运行另一个nodejs进程: node grab_modules 它将运行GrabModule GrabModule将尝试使用MyModule的函数 这可能吗? 如果这是可能的如何?

使用node.jsvalidationXML语法/结构

我想validation下面使用node.js的XML。 任何人都可以提出一个好的node.js模块,可以在Windows / Linux上工作吗? validationXML语法 validationXML结构(模式) 提前致谢。

Node.js C ++ addon:来自不同线程的多个callback

我正在创build一个节点C ++插件,应该callback一个JS函数,因为事件是由不在我的控制下的其他线程触发的(它实际上是一个来自我使用的托pipeDLL的.NET线程)。 由于JS世界是单线程的,我不能只保留js函数引用,并从非js线程调用它。 我甚至不能创build我想传递给该线程callback函数的参数。 我已经看到uv_queue_work被用在你想要从js线程移出工作的情况下,并且一旦完成并从js线程callback来做你需要做的任何事情,比如callback一个js函数。 为了以后的参考,这里是该函数的签名: int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb, uv_after_work_cb after_work_cb); 调用uv_queue_work对于一次性工作是很好的,我可能会经常通过从after_work_cb链接调用uv_queue_work来调用我,而work_cb与其他线程同步,但是我不知道是否没有更直接的方法这样做。 就像node.js提供的fn一样,它可以被任何其他线程直接调用,而fn指针指向下一次在主js线程上执行的代码。 任何想法?

从Node.js和CouchDB开始,没有像纳米或摇篮库

可能重复: 尝试从Node.js插入文档到CouchDB时,出现“bad_request invalid_json”错误 CouchDB和Node.js的最高票数答案- 你推荐哪个模块? build议不要使用像Node.js和CouchDB一样的库(如nano或cradle)。 但是,我还没有find任何教程如何执行标准操作为所有DBMS如创build数据库,创build表,添加和查看数据等编程。 编辑:(部分回答)安装和启动CouchDB后去http://localhost:5984/_utils/script/couch.js 。

如何访问fscallback方法中的文件的名称?

如何从callback中访问fs.read , fs.stat …方法的参数? 例如,如果我想根据其大小处理文件(coffeeScript)代码片段 #assuming test1.txt exists filename = "./test1.txt" fs.stat filename, (err, stats) -> data = filename:filename,size:stats.size console.log data #further process filename based on size filename = "./test2.txt" 版画 { filename: './test2.txt', size: 5 } 因为文件名被设置为“./test2.txt”。 如果我使用fs.statcallback中的filenamevariables处理/读取文件,它将使用不是打算的test2.txt 。 我期望在callback中看到的是 { filename: './test1.txt', size: 5 }

通过gm通过Express.js上传stream文件以消除双重写入

我正在使用Express.js并有一个上传图像的路线,然后我需要resize。 目前我只是让Express写入文件到磁盘(我认为使用node-formidable下),然后调整使用gm (http://aheckmann.github.com/gm/)写入第二个版本到磁盘。 gm(path) .resize(540,404) .write(dest, function (err) { … }); 我已经读过,你可以在将node-formidable文件stream写入磁盘之前获得一个node-formidable ,因为gm可以接受一个stream而不是一个path,所以我应该可以通过消除双重写到磁盘。 我想我需要覆盖form.onPart但我不知道在哪里(应该做Express中间件?),我不知道如何得到一个form或与该part究竟做什么。 这是我在几个地方见过的代码框架: form.onPart = function(part) { if (!part.filename) { form.handlePart(part); return; } part.on('data', function(buffer) { }); part.on('end', function() { } } 有人可以帮我把这两块放在一起吗? 谢谢!