大招:requestBody不允许

我试图用swagger定义一个post端点,但是它不允许requestBody参数: /names/{roster}: get: #… post: x-swagger-router-controller: names description: Adds or removes name(s) operationId: manageNames parameters: – name: roster in: path description: the roster to use type: string required: true requestBody: content: 'application/json': schema: $ref: '#/definitions/ManageNamesRequest' 当我运行npm start ,我得到这个: API Errors: #/paths/~1names~1{roster}/post: Additional properties not allowed: requestBody 1 error and 0 warnings 我的规范有什么问题?

Nodejs Express多个callback错误

我正在使用Nodejs Express自制RBAC系统,基于两个层次: 首先,validation用户是否有正确的angular色来执行此操作。 其次,validation用户是否有正确的计划来执行此操作。 ,我创build了一个这样的中间件: exports.can = function (resource, action) { return function (request, response, next) { action = action || request.method; if (!request.user) { return next(new errors.UnauthorizedError()); } request.user.can(request.user.role, request.user.currentPack, resource, action, function (can, error) { if (error) return next(error); if (!can) { return next(new errors.UnauthorizedError()); } return can; }); return next(); }; }; […]

是否可以在本地testingFirebase触发器?

使用firebase-functions与节点和exports.foo = functions.database.ref('/object').onWrite(event => {}); 。 我可以部署到云和testing就好了…我可以很容易地在本地使用firebase serve –only functionstestingHTTPtypes的firebase serve –only functions 。 但是,我没有看到本地testing触发器的方法。 可能吗? 怎么样?

如何使用knex.js链接查询?

我在理解Knex.js中承诺的工作方面遇到了一些麻烦(使用Bluebird.js作为承诺)。 我试图做一些非常简单的事情,依次执行不同的插入语句,但是我一直无法使它工作。 这里是我到目前为止的代码,这是为了在authentication_type表上执行一个insert,然后在user_table上插入一个insert,然后在category表上插入一个insert。 // Import database connection var knex = require('./db-connection.js'); // Add a row to authentication_type table so that user's can be created function add_authentication_type() { return knex('authentication_type') .insert({id: 1, name: 'Internal'}) } // Add a 'default' user with nil uuid // Anything added without a user must link back to this user function […]

如何在mongodb数据库中检查已有的大学名称

router.post('/university',function(req,res,next){ University.create(req.body).then(function(detail){ res.send(detail); }); }); const mongoose = require('mongoose'); const Schema = mongoose.Schema; const UniversitySchema = new Schema({ university_name: { type:String }, status: { type: String, enum: ['active', 'inactive'] } }); const University = mongoose.model('university',UniversitySchema); module.exports = University; 如果不存在,如何检查已有的大学名称并将新的大学插入MongoDB数据库。 这个怎么做 。 请帮助我。

Mongodb时区问题,按date过滤

我正在尝试使用startDate和endDate之间的“date”字段获取所有logging。 我用这个查询数据库(从月初到今天的logging): var startDate = new Date(2017,09,1); var endDate = new Date(2017,09,7); //console.log(startDate) = Sun Oct 01 2017 00:00:00 GMT-0300 (BRT) //console.log(endDate) = Sat Oct 07 2017 00:00:00 GMT-0300 (BRT) Sale.find({date:{"$gte":startDate,"$lt":endDate}},function(err, sales){ } loggingdate在10/02和10/07之间,并被退回,但是10/01date的logging没有被退回。 以下是这些缺失logging的date字段: "date": { "$date": "2017-10-01T23:00:00.000Z" } 我把时间设定为23,看看它是否会有所作为(时区等),但没有。 如果我把startDate设置为9月30日23小时,什么都没有。 22时21分,什么也没有。 当startDate变成9月30日,小时20,宾果时,logging被返回。 这可能是一个时区问题,但我无法确定在哪里以及如何。

条件语句中存在Javascript字典关键字

在使用Node.JS中的字典对象作为MEAN堆栈项目的一部分时,遇到了一些奇怪的行为。 我在代码的前面定义了一个keywordSearches字典, searches是一个包含keyword属性的Search对象数组。 我基本上是从MongoDB中获取所有search请求的logging,然后创build一个包含关键字search频率的字典,其中关键字是search文本,值是search频率(一个整数) 。 所有这些都存储在keywordSearches 。 然而,当我使用下面的代码遍历我的search,我看到keywordSearches的关键字在我的if条件之外评估为false,但是在if条件(下一行!)内显然评估为true。 为什么会发生? console.log(keywordSearches); for (var i = 0; i < searches.length; i++){ var keywords = searches[i].searchBody.keywords; console.log(keywords in keywordSearches); // <- this evaluates to false if (!keywords in keywordSearches){ // <- this section of code never executes! Why? console.log("New keyword found") keywordSearches[keywords] = 1; } else { keywordSearches[keywords] […]

Algolia Javascript前端客户端search – .clearCache只有第一次运行,然后结果已过时,需要重新加载

我一直在努力解决这个问题几个星期,在我的Ionic应用程序中,我有一个简单的“search”,我没有search的文本,只使用filter。 Algolia通过Nodejs脚本与Firebase服务器同步,当我在Firebase中创build/更新/删除条目时,它会自动更新Algolia中的该对象。 问题是,当我从我的应用更新Firebase中的对象时,我自动再次调用Algolia以获得更新的结果集。 但是,当我这样做时,更新的结果不会出现,直到第二次,我必须重新加载结果。 它应该这样做,一旦我更新和重新加载,但它需要第二次重新加载。 我应该注意到,当我第一次加载Algolia的结果,然后做一个创build/更新/删除操作,它会显示正确,但随后的更新似乎有所不同,基于Algolia和Firebase之间的竞争条件。 我试过添加一个setTimeout()因为我相信这可能与这个种族问题有关。 似乎同步几乎立即发生,但即使延迟了500毫秒,它仍然遇到这个问题,结果不一致。 如果我把延时增加到至less1500ms – 5000ms,似乎每一次都会工作,但这一切都取决于networking连接。 有一个更好的方法吗?

如何使用Mongoose,Express,Angular 4和NodeJS上传/保存和显示图片

我正在使用Mongoose,Express, Angular 4和NodeJS来创build一个应用程序,而且我对这个语言还很陌生。 在我的组件之一,我有一个CRUD,我想上传一张图片。 保存到Mongoose / MongoDB后,我想在屏幕上显示图片。 我应该使用插件吗? 如果是这样,哪一个? 你能举一个例子吗?

显示页面上的videostream块(node.js)

在Node.js中,我还是个新手,如果我听起来语无伦次,试图弄清楚一些事情,请原谅。 所以我已经阅读了一些关于stream的初学者笔记,现在我正在testing它。 我在我的项目文件(公共/图像/video/ Seinfeld.S09E07.720p.WebRip.ReEnc-DeeJayAhmed.mkv)中获得了这些Seinfeld情节(.mkv文件),我想在页面上显示。 现在,简单的select就是把它放在我的ejs文件中的video标签的“src”中。 但是,我想stream式传输video部分,以便它不必等待整个文件准备好显示该情节。 我以为我可以使用.createReadStream为此。 但是,我不知道如何将那些准备好的video数据块传输到我的网页中,以便在video播放器中显示它们。 index.js服务器端 var express = require('express'); var router = express.Router(); var fs = require('fs'); /* GET home page. */ router.get('/', function(req, res, next) { var myReadStream = fs.createReadStream(__dirname + '/../images/videos/Seinfeld.S09E07.720p.WebRip.ReEnc-DeeJayAhmed.mkv'); myReadStream.on('data', function (chunk) { // no idea what to do from here }) res.render('index', { title: 'Express' }); […]