REST满服务,Post不能正确保存到数据库 我有节点+快递+mongoose我的模特: var mongoose = require('mongoose'), Schema = mongoose.Schema; var bookModel = new Schema({ title: { type: String }, author: { type: String }, genre: { type: String }, read:{ type: Boolean, default:false } }); module.exports = mongoose.model('Book', bookModel); 我的App.js var express = require('express'), mongoose = require('mongoose'), bodyParser = require('body-parser'); var db = mongoose.connect('mongodb://localhost/bookApi'); var […]
我想在nodejs中加载数据,然后传递给expressjs在浏览器中渲染d3图表。 我知道我可以从这里加载数据 – https://github.com/mbostock/queue 我有一个expressjs路由configuration像这样 – var d3 = require('d3') ,queue = require("queue-async") ; router.get('/', handler1); function handler1(req, res) { queue() .defer(d3.json, 'https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id%20as%20source, org_pac_id%20as%20target,org_lgl_nm%20as%20description') .defer(d3.json, 'https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id%20as%20source, org_pac_id||pri_spec%20as%20target, pri_spec%20as%20description') .defer(d3.json, 'https://data.medicare.gov/resource/a8s4-5eya.json?$limit=50000&$$app_token=igGS35vW9GvDMmJUnmHju2MEH&$select=org_pac_id||pri_spec%20as%20tsource, pri_spec%20as%20target, frst_nm%20as%20description') .await(go); function go(error, data,d2,d3){ data.concat(d2); data.concat(d3); console.log(data); res.render('index', { title: 'Group Practices', data }); } } module.exports = router; 但是,我得到一个浏览器错误, XMLHttpRequest is not […]
我正尝试使用NodeJS和ArcGIS Server REST提要中的dojo / request来请求png图像,并将图像返回给客户端。 我需要nodeJS为请求添加一个令牌作为查询参数,因为我的服务是安全的,我想通过节点而不是在资源服务器(ArcGIS Server 10.3)上控制它们的安全性。 图中没有nodeJS,png加载到浏览器中。 这是一个调用返回一个PNG图像的(打开的)示例,使用它们的标准REST提要: https : //sampleserver6.arcgisonline.com/arcgis/rest/services/911CallsHotspot/MapServer/1/images/257104fa1b21d7b483c160ee8f3943bb 我正在使用dojo / request来访问这个资源。 看起来png图像正在回到节点,但是当我res.send()回到客户端时,我在Fiddler中得到了一个“不是图像”。 我可以在hexview中看到PNG头文件,以及IHDR和IEND,但显然编码(?或其他)与直接从ArcServer返回资源时不同。 当从节点返回的客户端接收到png时,内容长度比直接从ArcServer直接发送相同的png要less一些。 (Node默认尝试使用Transfer-Encoding:Chunked,我将content-length设置为响应的长度,所以它一次发送,我相信这是客户端期望的行为)。 ESRI(ArcGIS Server)有一个新的示例存根,它正是我想要做的,然而他们使用esri / request(build立在dojo / request)客户端,并利用Blob库为客户端创build正确的响应。 https://developers.arcgis.com/javascript/jssamples/data_requestArrayBuffer.html 我们可以看到他们使用handleAs:“arrayBuffer”,我已经尝试了dojo / request,并且它对返回的png的内容似乎没有任何区别。 当他们收到响应时,他们创build一个新的Blob,然后用FileReader(我有一个节点端实现)读取它作为数据URL,并直接使用该结果作为png。 我已经尝试过ad-nausuem来复制这个,但是看起来节点没有一个可靠的Blob库(我没有尝试过“Blob”),并且我在节点中读到了你应该使用Buffers。 不pipe我传递给fileReader,我得到的错误“不能读取文件”(我已经尝试所有的fileReader方法)。 fileReader库: https : //www.npmjs.com/package/filereader ESRI代码: esriRequest(url, {handleAs: "arrayBuffer"}).then(function(response) { reader.readAsDataURL(new Blob([response], { type: "image/png" })); //reader.result is png ready to use client […]
我在TypeScript中构build了一个Node.js网站,它公开了一个RESTful API。 将不同的方法分离到不同的类/文件的最佳实践是什么? 我想为每个资源我需要创build一个单独的类。 例如: class Customers{ router.get('/customers'); router.post('/customers'); router.put('/customers'); router.delete('/customers'); } class Orders{ router.get('/orders'); router.post('/orders'); router.put('/orders'); router.delete('/orders'); } 这是真的? 而如果我有许多资源只包含一个方法,每一个? 例如: router.get('/orders'); router.post('/customers'); router.put('/products'); router.delete('/employees'); 编辑:我被回答,我可以把所有的路线在一个单一的文件,只是把处理程序分成多个文件。 所以我的问题是:如何命令/将它们LOGICALLY分为不同的文件(关于我在我的问题中写的例子)? 注意:我不需要一个技术性的程序化信息,而是一个逻辑分离的抽象解释。
用例 使用Node.js,Express和像Handlebars这样的模板引擎来查询其他API,如Wordpress和CouchDB并呈现结果。 我已经走了那么远 var https = require('https'); var express = require('express'); var handlebars = require('express-handlebars') .create({ defaultLayout:'main' }); var app = express(); app.engine('handlebars', handlebars.engine); app.set('view engine', 'handlebars'); app.set('port', process.env.PORT || 3000); app.set('ip', process.env.IP); var options = { hostname: 'public-api.wordpress.com', path: '/rest/v1.1/sites/somesite.wordpress.com/posts/16', method: 'GET' }; app.get('/test', function(req, res) { https.request(options, function(restRes) { console.log('STATUS: ' + restRes.statusCode); […]
我想学习angular2 webpack materlias2节点…等…我开始使用和修改这个样板: angular2-webpack-starter 现在我还想学习nodejs作为Web服务器(使用快速框架或任何你build议的,一个MySQL的ORM等)。 我的问题是:现在我已经创build了我的示例项目(来自angular2-webpack-starter),我已经创build了一个傻瓜ajax调用,我怎样才能将我的项目与用NodeJS写的API REST集成? 你能提供一个简单的例子代码? 另外,从angular2-webpack-starter样板开始,哪里可以放置所有API rest服务器代码? 任何其他build议将不胜感激 非常感谢你
我正在运行一个处理REST API调用的node.js服务器。 这些调用的响应将是一个或MongoDB对象(JSON)的列表。 我已经阅读了关于参数和如何处理它们。 但有没有办法自动做到这一点? 可以说我有一个用户集合: name: String, hobby: String, age: Number 现在我想要得到年龄为18的所有用户的列表。 我知道我可以像这样恢复参数: url: http://localhost:3000/user?age=18&hobby=something var app = express(); app.get('/user', function (req,res) { var age=req.query.age; var hobby=req.query.hobby; mondodbUser.find(…); } 但假设用户有10个不同的属性,我有15个不同的集合。 我不能dynamic地做这个吗? 所以我不必恢复每一个可能的参数? 我想能够使用所有给定的参数来searchMongoDB。 我希望我能够expression自己:D谢谢!
在哪里以及如何在电子应用程序中编写REST API? 我已经编写了API(访问MongoDB以在数据库中添加/删除/修改对象),并且在NodeJS应用程序中运行良好。 但我不清楚如何在电子应用程序中做同样的事情。
我正在使用NodeJs写一个rest服务,并表示中间件。 我有下面的问题 – 我不得不在每个服务中使用userid和token进行身份validation,而不考虑GET , POST , PUT和DELETE方法types。 采取这两个参数,即请求标题或查询参数的最佳方法是什么? 我不想把它作为身体参数,因为请求不会有身体。 我想写一个方法types为GET的服务的数据检索的服务,这个调用的参数是string和date。 我怎么把这个parameter passing给查询参数,具体来说date参数应该作为jsdate还是其他格式来传递呢? GET – https://localhost:someport/<objectid>/<createddate> headers – x-user-id:someid x-access-token:sometoken 如果这样的话,哪个格式的创builddate应该被传递。 或者我应该使用下面的一个? GET – https://localhost:someport/ headers – x-user-id:someid x-access-token:sometoken x-object-id:someid x-created-date:somedate
我正在尝试使用express和mongoose来开发一个Node.js后端。 在networking上,有很多关于如何实现一个合适的authentication层的例子,但是我找不到如何正确实现授权层的例子。 在我的具体情况下,我创build了一个多用户应用程序的后端,我希望每个用户只能看到自己插入的数据。 我有三个模型: 用户 类别 文件 用户拥有一个或多个类别 , 类别包含零个或多个文档 。 CRUD操作在以下端点上执行: /user/:userid /user/:userid/category /user/:userid/category/:categoryid /user/:userid/category/:categoryid/document /user/:userid/category/:categoryid/document/:documentid 在authentication部分我设置为每个请求当前login的用户ID,所以我可以很容易地检查 jsonwebtoken.userId == req.params.userid 否则返回一个403错误。 检查类别的所有权非常容易,因为每个类别都包含对创build它们的用户的引用。 var CategorySchema = mongoose.Schema({ name: { type: String, required: true, trim: true }, user_id: { type: mongoose.Schema.Types.ObjectId, ref: 'User', index: true } }); 然而,在Document模型中,我只有一个对它所属的类别的引用,但是我没有给用户添加一个引用。 我想知道如何进行“嵌套”的关系。 我是否需要在任何深度级别添加一个user_id引用给它们全部? 有没有最佳做法? 而且,这是做我需要的正确的方法还是有任何官方/成熟的图书馆已经这样做?