Tag: 表示

Mongoose错误 – elemMatch()必须在使用这些参数调用where()之后使用

我有以下模式: UserSchema = new Schema({ 'username': { type: String, validate: [validatePresenceOf, 'a username is required'], index: { unique: true } }, 'hashed_password': String, 'salt': String, 'locations': [LocationSchema] }); LocationSchema = new Schema({ 'lat': Number, 'lng': Number, 'address': { type: String, validate: [validatePresenceOf, 'The address is required in order to add a new location.'] }, 'name': […]

从rethinkdb获取条目到node.js博客

我想做一个简单的节点博客,但我需要一些帮助! 我想将我的博客“条目”或“post”保存为rethinkdb,但要做到这一点,我首先需要知道如何让我的post出现在我的博客上,所以我做了一个rethinkdb服务器,有一些条目! 这是它的样子: [ { "body": "This is the standard hello world message!" , "id": "1" , "published": "2014-04-19" , "title": "Hello World!" } , { "body": "I tought dinner with my family would be horrific, but maybe my low expectations made it bearable" , "id": "3" , "published": "2014-04-19" , "title": "Dinner was ok!" […]

Node.js Express无法获取发布数据

当我发布到/ insertUser和它的schema.saveUser(req)它找不到正确的数据。 我正在使用节点检查器,它无法find我的发布数据。 我也尝试了req.body,它什么都没发现。 我正在发送一个json var express = require('express'); var bodyParser = require('body-parser'); var schema = require("./schemas"); var app = express(); app.get('/hello.txt', function(req, res){ res.send('Hello World2'); }); app.post('/insertUser', function(req, res){ console.log("Request handler 'insertUser' was called."); //console.log(req.body); schema.saveUser(req); response.writeHead(200, {"Content-Type": "text/plain"}); res.send("You've sent the text: " + req); response.write("The following data has been saved to the […]

在那里我创build或修改视图的全局variables(ejs)

我需要修改variables“ <%= title %> ”,但我不知道他们在哪里创buildvariables,或者我可以在哪里更改它。 我想知道其他全局variables可以在视图中find,例如variables<%= session%>我没有发送,但由于某种原因已经存在。 在“expression”中它曾经触动过我,做了如下的事情: “ res.render('session/new', {title: "Log in", session: req.session}); ” 所以我想知道他们在哪里创build“会话”variables,因为我不喜欢出去那里不知道一些事情XD 非常感谢你的帮助。

如何在Node.js Express中从POST路由器调用PUT路由器?

在Node / express中,我有一个POST请求,如果它包含一个id我希望它调用PUT方法。 没有redirect,只是如何从post方法调用put方法? router.put('/:id', function(req, res) { // code … }); router.post('/:id?', function(req, res) { if (req.params.id) { // call PUT method } }); 我不想做redirect,只是把它当作是当前请求的一部分。

表示路由器参数 – 链接URL

我在Express中定义了一个完整的CRUD API,我想删除基础的重复并使用时髦的routefunction,但是我担心这是不可能的。 当前: var router = express.Router(); var base = '/api/foo/bar/'; router.get(base, this.list); router.get(base + ':id', this.read); router.post(base, this.create); router.put(base + :id', this.update); router.del(base + :id', this.del); 期望: var router = express.Router(); router.route('/api/foo/bar') .get(this.list) .get(':id', this.read) .post(this.create) .put(':id', this.update) .del(':id', this.del) 问题是动词函数(get,post,put,del)不接受一个string作为他们的第一个参数。 有没有类似的方法来实现这一目标?

req.form不是一个实例化的多方表单对象

我正在使用具有多部分中间件的快速节点框架。 设置multipart defer: true选项让我可以访问req.form中的req.form ,但它似乎不是一个有效的多方Form对象实例。 这只是一个普通的旧JS对象。 问题在于我无法使用表单对象上的多方文档中列出的function。 听事件,parsing表单等是行不通的。 我使用这个build议,而不是折旧bodyParser()与快递: app.use(express.urlencoded()); app.use(express.json()); app.use(express.multipart({ limit: '900mb', defer: true })); 在我的路线中: app.post('/api/videos/upload', isLoggedIn, function(req, res) { var form = req.form; form.on('progress', function(bytesReceived, bytesExpected) { console.log(bytesReceived + ' / ' + bytesExpected); }); 我在日志中没有得到任何进展。 我看到的所有例子都假设这个表单对象是真正的交易,而不仅仅是一个数据对象。 他们有什么不同? 我错过了什么? 我看到了一些解决scheme,build议直接编写我自己的使用多方的中间件。 我考虑过这个,但是我在不需要这个控制级别的不同路由中使用多部分中间件来处理其他表单。 是否可以使用多部分,并写我自己的中间件只是为了上传? 如果我要去兔子洞,我会解释我的最终目标。 我想在上传开始之前检查预期的字节,所以我可以立即将它踢回到前端。 在找出文件太大之前,没有理由让用户等待900MB上传。 如果任何人有任何的洞察力如何实现这一点,请分享。

摩卡,快速testing错误 – “毕竟”钩错误 – 对象函数没有方法“closures”

我刚刚开始使用摩卡,testing一个非常基本的Express 4.0 rest API。 describe('API CALL UNIT TESTING', function(){ var app = require('../../app'); before(function(){ app.listen(3000); }); describe('GET', function(){ it('respond with json', function(done){ request(app) .get('/api/compile') .set('Accept', 'application/json') .expect('Content-Type', 'application/json') .expect(200, done) .end(function(e, res){ //console.log(res) done(); }) }) }); after(function() { app.close(); }); }); 运行testing时,我得到以下错误: 1通过(48ms)1失败 1)API CALL UNIT TESTING“毕竟”挂钩:TypeError:对象函数(req,res,next){app.handle(req,res,next); }没有方法“closures” 任何人都可以build议是什么导致“毕竟”钩错误?

在Express 4.0中无法将路由拆分为单独的文件

我试图将所有以/api结尾的路由redirect到manager.js ,然后将其路由到/me 。 所以,一个完全合格的/me应该看起来像/api/me 。 在Express 3.x中将路由拆分成单独的文件很容易,但在4.0中遇到了问题。 app.js app.use('/api',require('./routes/manager')); manager.js var express = require('express'); var manager = express.Router(); module.exports = function() { manager.use('/me',require('../routes/me')); }; me.js var express = require('express'); var me = express.Router(); module.exports = function() { me.route('/') .get(function(req,res){ res.send("Welcome to Me"); }); }; 当我到localhost:8080/api/me ,没有任何反应,页面一直在加载。 谢谢你的帮助!

从callback函数中返回一个对象,这样一个包装函数可以返回node.js / express中的同一个对象

我正在尝试从调用第三方API的数据中返回一个对象。 我正在使用请求( https://github.com/mikeal/request )模块来完成相同的。 不过,我想从callback函数中返回这个对象。 我的请求调用是一个JavaScript函数的一部分,我希望这个外部函数能够返回新构造的对象。 由于node.js的非阻塞性质,我面临着问题,因为每当我尝试从外部函数返回对象时,由于callback函数尚未构造对象,它将返回一个空对象。 我怎样才能做到这一点? function getData(url){ var myWeatherData = new Object(); var data; request(url, function (error, response, body) { if (!error && response.statusCode == 200) { data = JSON.parse(body); myWeatherData.locationName = data.current_observation.display_location.full; myWeatherData.weather = data.current_observation.weather; myWeatherData.temperature_string = data.current_observation.temperature_string; myWeatherData.relative_humidity = data.current_observation.relative_humidity; myWeatherData.wind_string = data.current_observation.wind_string; myWeatherData.feelslike_string = data.current_observation.feelslike_string; } return myWeatherData; // […]