Tag: node.js

mongoose:获取用户的完整列表

我试图用Mongoose发送所有用户的列表,如下所示: server.get('/usersList', function(req, res) { var users = {}; User.find({}, function (err, user) { users[user._id] = user; }); res.send(users); }); 当然, res.send(users); 会发送{} ,这不是我想要的。 有没有find另一种略有不同的语义,我可以做到以下几点? server.get('/usersList', function(req, res) { User.find({}, function (err, users) { res.send(users); }); }); 从本质上讲,我希望只有当所有的用户都从数据库中获取callback才能被执行。

获取Cordova / Phonegap在Genymotion虚拟设备上模拟

使用Cordova CLI,我build立了一个应用程序并构build它: cordova create hi com.example.hi Hi cd hi cordova platform add android cordova build android 我运行Genymotion并启动一个名为“api9”的设备。 我运行Androiddebugging桥adb devices ,它显示为 192.168.8.101:5555 我尝试启动与cordova emulate android的应用程序,但我得到: Error: An error occurred while emulating/deploying the android project. …spawn ENOENT 但是,启动Android虚拟设备pipe理器并启动仿真设备; cordova emulate android工程和adb devices列表; 192.168.8.101:5555 emulator-5554 我该怎么做才能让cordova通过Genymotion装置来仿效?

NPM不工作,总是得到这个错误 – >错误:找不到模块'我们在那里'

我试图用优胜美地在mac上安装grunt。 节点已经安装在最新版本中。 如果我在terminalinput“节点-v”我得到行v0.12.5。 那很好。 但是当我想用npm安装一些东西时,我只得到一个错误… 我试过“sudo npm install -g grunt-cli”,“sudo npm install npm -g”以及“npm -v”,我总是得到这个错误… Error: Cannot find module 'are-we-there-yet' at Function.Module._resolveFilename (module.js:336:15) at Function.Module._load (module.js:278:25) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/usr/local/Cellar/node/0.10.22/lib/node_modules/npm/node_modules/npmlog/log.js:2:16) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) 有人知道有什么问题或更好的解决scheme?

Mongoose中哪个SchemaType最适合时间戳?

我正在使用Mongoose,MongoDB和Node。 我想定义一个模式,其中一个字段是date\时间戳。 我想使用此字段以返回在过去5分钟内更新的所有logging。 由于在Mongoose我不能使用Timestamp()方法的事实我明白,我唯一的select是使用下面的Javascript方法: time : { type: Number, default: (new Date()).getTime() } 这可能不是查询一个庞大的数据库的最有效的方法。 我真的很感激,如果有人可以分享一个更有效的方式来实现这一点。 有没有什么办法可以用Mongoose来实现这一点,并能够使用MongoDB的时间戳?

如何将缓冲区打包为stream2可读stream?

如何使用stream2接口将node.js缓冲区转换为Readablestream? 我已经find了这个答案和stream-buffers模块,但是这个模块是基于stream1接口的。

asynchronous构造函数

我怎样才能最好地处理以下情况? 我有一个构造函数需要一段时间才能完成。 var Element = function Element(name){ this.name = name; this.nucleus = {}; this.load_nucleus(name); // This might take a second. } var oxygen = new Element('oxygen'); console.log(oxygen.nucleus); // Returns {}, because load_nucleus hasn't finished. 我看到三个选项,每个选项都与众不同。 一 ,给构造函数添加一个callback。 var Element = function Element(name, fn){ this.name = name; this.nucleus = {}; this.load_nucleus(name, function(){ fn(); // Now continue. […]

我该如何执行asynchronous摩卡testing(NodeJS)?

这个问题涉及到NodeJS的Mochatesting框架。 默认行为似乎是开始所有的testing,然后处理asynchronouscallback,因为他们进来。 在运行asynchronoustesting时,我希望在调用之前的asynchronous部分之后运行每个testing。 我怎样才能做到这一点?

从Node.js运行shell命令而不缓冲输出

我试图从Node.js启动一个shell命令, 而不用redirect那个命令的input和输出,就像使用shell脚本或者使用Ruby的system命令来执行shell命令一样。 如果subprocess想写入STDOUT,我希望直接进入控制台(或者如果我的Node应用程序的输出被redirect了,那么会被redirect)。 节点似乎没有任何直接的方法来做到这一点。 看起来运行另一个进程的唯一方法是使用child_process ,它始终将subprocess的input和输出redirect到pipe道。 我可以编写代码来接受来自这些pipe道的数据,并将其写入到我的进程的STDOUT和STDERR,但是如果我这样做,这些API迫使我牺牲一些灵活性。 我想要两个function: Shell语法。 我希望能够在命令之间输出输出,或者运行Windowsbatch file。 无限输出。 如果我向一个编译器发出消息,并且想要产生兆字节的编译器警告,我希望它们全部在屏幕上滚动(直到用户厌倦它并点击Ctrl + C)。 它看起来像节点希望强迫我在这两个function之间进行select。 如果我想要无限量的输出,我可以使用child_process.spawn ,然后执行child.stdout.on('data', function(data) { process.stdout.write(data); }); 和stderr ,它会很乐意pipe数据直到牛回家。 不幸的是, spawn不支持shell语法。 如果我想要shell语法,我可以使用child_process.exec 。 但exec坚持要cachingsubprocess的STDOUT和STDERR,最后把它们全部提供给我,并且限制了这些缓冲区的大小(可configuration,默认为200K)。 我仍然可以挂上on('data')事件,如果我想在输出生成时看到输出,但是exec仍然会将数据添加到它的缓冲区中。 当数据量超过预定义的缓冲区大小时, exec将终止subprocess。 (还有child_process.execFile ,从灵活性的angular度来看,这是两个世界中最糟糕的一点:没有shell语法,但是你仍然要限制你期望的输出量。 我错过了什么吗? 有没有什么方法可以在Node中向subprocess输出,而不是redirectinput和输出? 一些支持shell语法的东西,并且在预定义的输出量之后不会出错,就像在shell脚本,Ruby等中一样。

更改npm脚本的工作目录

问:是否可以更改npm运行脚本的上下文? 我想要的是以下内容: "scripts": { "test": "gulp mocha", "pre-install": "./deps/2.7/cpython/configure –prefix=$(pwd)/build –exec-prefix=$(pwd)/build && make -C deps/2.7/cpython && make -C deps/2.7/cpython install", "install": "node-gyp rebuild" }, 很明显, cd deps/2.7/cpython/ && ./configure可以在类UNIX系统上工作,但不能在Windows上工作。 为什么:问题的根源在于,python repo的configure命令将文件输出到调用它的目录中。 然而,这些文件与make和make install有关,它们查找repo目录中的文件。 在这种情况下,我不能更改Makefile因为Python的构build过程非常复杂。 另一种方法:可能是写一些install.js并使用节点的操作系统无关的API和一些child_process.exec() ,我可能会这样做。 但是,不离开npm会很好。

如何在Node.js中最好地创build一个RESTful API

我是Node的初学者(通常是所有的后端Web开发),并且我已经开始在Node中编写一个RESTful API。 有几件事情我正试图让我的头脑。 我的应用程序使用Express和Mongoose,并使用express-resource模块轻松创build我的API资源的CRUD路由。 但是有一些我不高兴的事情,并认为我可以做得更好。 首先是mongoose。 如果我想为我的API编写testing,我没有办法将Mongoose强制存储到内存中。 所有的教程似乎指向mongoose,但是,我真的不知道我应该使用什么。 其次,我的资源似乎有很多样板代码。 这真的是在Node.js中创buildRESTful API的最好方法吗? 还有其他模块,可以帮助我创build我的CRUD路线吗? 我相信有一些方法可以直接从你的模式创buildCRUD路线,而不需要代码,但我真的不知道如何。 我已经看到了像Tower.js和CompoundJS(正式的RailwayJS)这样的项目,似乎这些解决scheme比我的问题解决得更多。 也许我应该使用它们,但我真的只想要Node.js应用程序是一个API,没有更多。 我正在处理独立于API的前端。 为了提供一些背景,这里是我目前的情况。 目前,我有一个在Mongoose中定义的模型: var mongoose = require('mongoose') , Schema = mongoose.Schema , Link var LinkSchema = new Schema({ uri: String, meta: { title: String, desc: String }, shares: [{ uid: Schema.Types.ObjectId, date: Date, message: String }] }) Link = module.exports […]