Tag: mongoose restify

如何路由调用函数写入另一个文件

我有一个文件,启动nodejs / restify服务器,当电话到达我的服务器,我这样做: apiserver.post('/:param',call1); function call1(req, res, next) { //treatment } 但是我想把我的函数放在一个叫做functions.js的脚本中,问题是当我这样做的时候 var functions = require('./functions') apiserver.post('/:param', functions.call1(req,res,next)); 它说req,res和next是未定义的variables。

在node-restify-oauth2-mongodb的初始设置上是invalid_client

我的问题类似于这个问题,没有接受答案: 使用node-restify-oauth2-mongodb的问题 不过,我的clientKeys集合是正确命名的,或者至less我认为是有点不同的。 当我进入我的mongo实例,看我的collections我有: clientkeys users 当我看到这些集合中的东西时,我看到: > db.clientkeys.find().pretty() { "_id" : ObjectId("51c6e846ede91c0b8600005e"), "clientName" : "Test Client", "client" : "test", "secret" : "password" } > db.users.find().pretty() { "_id" : ObjectId("543d7b974f1870f131c6d0aa"), "name" : "Test", "email" : "test@test.com", "username" : "tester1", "hashed_password" : "$2a$10$gpMXyCuILBbMF2K6Aroc7.lKoIpuGhvL98ZGGoE0tEOtYSQaCpMde", "role" : "Admin", "__v" : 0 } 我遵循回购的方向: https : //github.com/rgallagher27/node-restify-oauth2-mongodb 所以我运行这个: curl […]

在Mongoose中处理错误

我正在使用Restify和Mongoose来创build一个API,而我对这两者都是全新的。 我似乎无法弄清楚在Mongoose / Node中处理错误的正确方法。 截至目前,我正在尝试做这样的事情: Submission.findById(req.params.submission_id, function(err, data) { if (err) return next(err); res.send(data); }); 我试图调用GET(对于不存在的用户)。 而不是发回一个简单的错误消息,它会导致我的整个节点应用程序失败。 我对下一次返回(err)的用户有些困惑,以及应该做什么。 任何帮助是极大的赞赏。

尝试使用Restify API中的Mongoose保存模型时,响应不会返回

我正在使用Restify和Mongoose为NodeJS构build一个API。 在下面的方法find用户并validation他们的密码后,我试图保存一些login信息,然后将响应发回给用户。 问题是响应永远不会返回。 如果我在保存调用之外和之后放置响应,数据永远不会持久保存到MongoDB。 难道我做错了什么? 在过去的两天里,我一直在为此工作提供帮助。 login: function(req, res, next) { // Get the needed parameters var email = req.params.email; var password = req.params.password; // If the params contain an email and password if (email && password) { // Find the user findUserByEmail(email, function(err, user) { if (err) { res.send(new restify.InternalError()); return next(); } // […]

如何更新Node.js中的一对多关系?

我正在使用一个使用mongoose , mongodb和restify的Node应用程序。 我想知道在定义路由function时是否有从各种模型导入代码的好习惯。 这应该是一个相当直接的问题,我只需要指导,我就可以自己编写代码。 感谢您抽时间阅读。 我知道如何定义这种关系,但是我不确定我应该如何去build立真正的关系。 也就是说,换句话说,当一辆汽车被创造出来的时候,最好的方法是给它添加一辆汽车。 请注意,我正在试图保持这个api RESTful。 我有两个模型,我将不得不基于下面的模式,这是存储在db/schema.js : //schema.js var restify = require('restify'); var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId; // User Schema exports.User = new Schema({ id: ObjectId, name: String, cars: [{ type: ObjectId, ref: 'Car' }], }); // Car Schema exports.Car = new Schema({ […]

位置对象预期,位置数组格式不正确

我花了这么直截了当的事情。 我只想在使用nodejs,mongoose,restify stack的用户模型上执行CRUD操作。 我的mongo实例在mongolab上。 用户应该包含一个“loc”字段。 用户架构如下: var mongoose = require('mongoose') var Schema = mongoose.Schema; var userSchema = new Schema( { email_id : { type: String, unique: true }, password: { type: String}, first_name: String, last_name: String, age: String, phone_number: String, profile_picture: String, loc: { type: {}, coordinates: [Number] } }); userSchema.index({loc:'2d'}); var User = mongoose.model('user', […]

提取mongoosew / Restify

我很好奇,如果任何人都可以提供一些最好的方式来抽象用Node.js + Restify + Mongoose构build的API。 来自MVC / PHP背景之后,发现Node应用程序没有string/定义的结构很有趣。 截至目前,我有我的app.js文件,自动加载我的routes.js文件,所有模型js文件等 这个困惑主要在于我的路线应该如何与来自Mongo的数据交互。 这是关于我的代码是如何布局的基本概要。 app.js : /** * Require Dependencies */ var restify = require('restify') , mongoose = require('mongoose') , config = require('./config') , routes = require('./routes'); /** * Create Server & Define Settings */ var server = restify.createServer({ name: config.name, version: config.version }); /** * Common Handlers […]

JavaScript泄漏内存(Node.js / Restify / MongoDB)

更新4 :通过在函数之外实例化restify客户端(请参阅controllers / messages.js),并在每次请求之后调用global.gc(),似乎内存增长率已经降低了很多(每10secs约500KB)。 但是,内存使用量仍在不断增长。 Update3 :来到这篇文章: https : //journal.paul.querna.org/articles/2011/04/05/openssl-memory-use/ 值得注意的是,我正在使用Restify的HTTPS。 更新2 :将下面的代码更新为当前状态。 我已经尝试用Express交换Restify。 可惜这没有任何区别。 似乎api调用链(restify – > mongodb – > external api)会导致所有内容都被保留。 更新1 :我用标准的MongoDB驱动程序replace了Mongoose。 内存使用似乎增长速度不够快,但泄漏仍然存在。 我一直在试图找出这个漏洞几天。 我使用Restify和Mongoose运行一个API,并且对于每个API调用,我都至less执行一次MongoDB查找。 我有大约1万2千个用户在一天内多次访问API。 我曾经尝试过 我已经将我的代码隔离到只使用Restify并使用ApacheBench发起大量请求(100k +)。 testing期间,内存使用量保持在60MB左右。 我已经隔离我的代码只使用Restify和Mongoose,并以上述相同的方式进行testing。 内存使用量保持在80MB左右。 我已经使用ApacheBench在本地testing了完整的生产代码。 内存使用量保持在80MB左右。 我已经自动倾倒堆的间隔。 我有最大的堆转储是400MB。 我只能看到有很多的string和数组,但我不能清楚地看到它的一个模式。 那么,有什么可能是错的? 我只使用一个API用户完成了上述testing。 这意味着mongoose只会一遍又一遍地抓住同一个文件。 与生产的区别在于很多不同的用户打了API意思,mongoose得到了很多不同的文档。 当我启动nodejs服务器时,内存很快增长到100MB-200MB。 最终稳定在500MB左右。 这是否意味着它泄漏每个用户的内存? 一旦每个用户访问API,它会稳定? 我在下面列出了我的代码,概述了我的API的一般结构。 我很想知道在我的代码中是否存在严重错误,或者是找出导致高内存使用率的其他方法。 码 app.js var restify = […]