Tag: 表示

保存后,Mongoose返回填充数组

我想返回一个更新的对象作为JSON,其中更新是设置一个objectIDs数组。 我希望返回的反对将该数组填充。 例如,我有以下(简化)模型: var UserSchema = new mongoose.Schema({ username: {type: String, unique: true, required: true}, friends: [{type: mongoose.Schema.Types.ObjectId, ref: 'User'}] }); 在我的控制器中,我有: exports.saveFriends = function(req, res) { User.findById(req.params.user_id, function(err, user) { // req.body.friends is JSON list of objectIDs for other users user.friends = req.body.friends user.save(function(err) { user.populate({path: 'friends'}, function(err, ticket) { if (err) { res.send(err); […]

NodeJS Express变得无响应,并获取超时

我有一种感觉,我有某种地方的泄漏,但我不知道如何识别或排除故障。 我使用express和nodejs的请求模块。 在负载下,通过请求向Facebook Graph API发起的https呼叫开始经历长时间延迟或超时。 起初,我认为这是一个在接收端(Facebook)的节stream问题,但是如果我做一个简单的C#控制台应用程序调用相同的URL几百次,没有一个响应时间大于150毫秒。 但是,节点中的相同代码从50ms到10s不等。 如果我使用请求时设置了超时属性,我开始得到ESOCKETTIMEDOUT错误。 如果我将请求选项上的pool.maxsize设置为100,那么我会得到ETIMEDOUT错误。 我怎样才能弄清楚我的挂断发生在哪里? 这是我使用请求模块的一个示例。 我也尝试添加到我的应用程序: require('http').globalAgent.maxSockets = Infinity; require('https').globalAgent.maxSockets = Infinity; var executeGetUrl = function getUrl(url, cacheKey, parseJson, accessToken, callback) { if (accessToken) { url = url + '?access_token=' + accessToken; } try { request({url: url, timeout: 10000, 'pool.maxSockets' : 100}, function (err, res, body) { if (err) […]

当使用JavaScriptdynamic加载页面内容时,使用Mocha + Zombie.js进行验收testing

我有一个问题,我一直在寻找解决scheme。 我有一个页面(快速应用程序),它有一个div#内容。 起初,它没有任何内容。 在页面加载时,调用JavaScript函数来确定用户是否已经login。如果不是,则在div#内容中填充login表单。 否则,用户configuration文件将显示在同一个div中。 这个程序是一个单页的应用程序。 所有的操作都由Ajax处理。 大部分内容也是dynamic生成的。 现在,我正在尝试用Mocha和Zombie.js写一些validationtesting。 但是,即使是这样一个简单的testing也不会通过: assert.equal(this.browser.text('div#content h1'), 'Login'); ..因为div#内容是空的。 我只是想知道是否有办法让所有dynamic填充内容的页面。 我尝试了browser.html(),将debug设置为true,将runScripts设置为true,对div#内容使用browser.wait(),以及许多其他方法,但是无法使其工作。 任何帮助将不胜感激。 谢谢!

NodeJS,与express.js一起使用private ca

我正在尝试使用由自定义CA签名的服务器证书创buildhttps / express服务器。 这是我的代码: var express = require('express'); var https = require('https'); var fs = require('fs'); var app = express(); var config = { key: fs.readFileSync('cert/server.key'), cert: fs.readFileSync('cert/server.crt'), ca: fs.readFileSync('cert/ca.crt') }; app.get('/', function(req, res) { res.send('Hello world'); }); https.createServer(config,app).listen(443); 这里是我如何创build我的CA和我的服务器证书: ### CA self signed openssl genrsa -des3 -out ca.key 1024 openssl req -new -key ca.key […]

jquery ajax基本authentication节点expression

我想通过基本authentication的ajax,将返回401状态 客户 使用coffeescript 使用jquery.base64.js $.ajax url : "http://example.com/" type: "GET" dataType: "text" crossDomain: true beforeSend: (xhr)-> credentials = $.base64.encode("user:pass") xhr.withCredentials = true xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest') xhr.setRequestHeader("Authorization", "Basic " + credentials) .always (result, textStatus, jqXHR) => if textStatus == "success" console.log "success" 服务器 使用coffeescript 使用node.js express router.use (req, res, next)-> res.header "Access-Control-Allow-Origin", "http://client.com/" res.header "Access-Control-Allow-Methods", "GET, PUT, […]

你可以使用玉来只呈现你的HTMLdynamic部分…而不是混淆你的HTML的其余部分

或者你可以部分渲染,稍后再渲染。 因此,让我们说,当应用程序启动它呈现大部分的HTML。 但是,当用户abc想要看到他的个人资料玉呈现名称abc并将其与常规的预渲染的html合并,然后您发送它等。 在每个请求中渲染整个html页面似乎是一种浪费。 将所有的静态HTML转换成玉看起来像是一个可以避免的烦恼。 慢慢的CSS成为LESS和HTML成为JADE? 我迷失在如何使用玉我正在学习快递。

如何使用Express(Node.js)的multer插件?

我不明白为什么我的代码返回错误? 我发送一个jpg文件(Content-Type:multipart / form-data)到localhost:3000/list/upload 也许我错了,但我错误地使用multer插件。 这是我的Express代码: var express = require('express'); var path = require('path'); var fs = require('fs'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var multer = require('multer'); var fileName; var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(logger('dev')); […]

有没有办法将ejs文件的文件扩展名保存为.html?

我正在开发一个使用ejs模板引擎的expressjs应用程序。 但是我想使用像home.html而不是使用home.ejs保持ejs文件的扩展名。 这是我使用Visual Studio开发和Visual Studio不支持ejs文件的原因。 所以代码提示格式和突出显示不起作用。 var express = require("express"); var app = express(); app.set("view engine", "ejs");//setting ejs view engine app.set("views", "./views"); app.get("/", function (req, res) { res.render("home"); }); app.listen(3000, function () { console.log("Server is listening on port 3000"); })

当AJAX调用获得404时,Express会返回CORS错误?

我有一个快速服务器进行Ajax调用另一个,它的工作很好,除非前端服务器请求一个不良的路线,然后在我的路线后处理: app.use(function(req,res,err,next){ console.log("404:"+req.route); res.status(404).send("bad route"); end(); }); 当我发送在Firefox的不良路由,我看到networking错误:“networking错误:404找不到”,但之后,我看到:“跨源请求被阻止:相同的来源策略不允许读取远程资源http://示例.com / bad这可以通过将资源移动到相同的域或启用CORS来解决。 但所有其他调用正常工作,我可以看到客户端获得404请求。 对于这个testing,我正在进行一个工作调用,并更改部分URL。 后端Express显示:“404:undefined”。 我找不到解决这个问题的任何东西。 我很困惑。 为了清晰起见,我在应用程序中看到了CORS头文件,它可以用于所有其他调用。 除了这个快递以外,使用真的很有趣,希望有人能看到我正在做的事。 按照要求,这是我如何设置我的cors: app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization'); next(); });

NodeJS(Express 4)+ i18n +下划线:问题与模板中的翻译

使用:NodeJS(Express 4)+ i18n +下划线。 我想在NodeJS(Express 4)中绑定和翻译一个Underscore模板。 绑定工作正常。 翻译在模板之外很好地工作。 但是我在模板内部有翻译问题:下划线不理解语法<%= __('translation key')%>: [ReferenceError: __ is not defined] 这是我的NodeJS代码: var express = require('express'), app = express(), cons = require('consolidate'), i18n = require('i18n'); _ = require('underscore'), // setup i18n app.use(i18n.init); i18n.configure({ locales: ['en', 'fr'], directory:'./app/locales', defaultLocale: 'en' }); // setup hbs app.engine('html',cons.underscore); app.set('views', './app/views'); app.set('view engine', 'html'); // […]