我正在使用mongodb,node.js和backbone.js来构build一个应用程序,作为我的学习体验。 我很想知道从REST API中获取相关对象的最佳做法是什么。 比方说,我们有“发布”对象和“用户”对象,post具有链接到用户的“userId”属性。 你应该: 在客户端获取一个post对象。 检查post的“userId”属性,然后分别获取该用户。 从服务器端代码来看,这似乎很好,但如果事情变得更复杂,最终可能会产生大量的请求。 获取一个post对象,并让服务器“build立连接”,并在相同的请求中给你相关的用户对象。 有没有人有一些他们可以分享的经验? 谢谢
我正在用Mongo编写一个REST API,并被整个文档build模策略所吸引。 这似乎是一个非常分歧的问题,人们说先反规范化,然后正常化,反之亦然。 我很想看看REST API的资源结构如何影响基于文档的数据库的结构。 对于REST api资源结构来说,似乎对所有东西(即位置,租户,交易)都有单独的集合是有意义的,尽pipe这似乎是对付Mongo的一个好处。 我的问题是如何在NoSQL(特别是Mongo)文档数据库中对REST api的资源进行build模。
我正在使用Node.js和Express创build一个Web API,并打算使用单个响应来同时返回图像和JSON数据。 我看到一个解决scheme来指定标题: https : //stackoverflow.com/a/18864738/1703565但我不想执行两个获取请求。 我如何做到这一点?
我有这个restapi: 'use strict'; /** * Module dependencies. */ var mongoose = require('mongoose'), Post = mongoose.model('Post'), _ = require('lodash'); /** * Find post by id */ exports.post = function(req, res, next, id) { Post.findOne({ '_id': id }, function (err, post) { if (err) { return next(err); } if (!post) { return next(new Error('Failed to load post […]
我正在试图在使用Mongo + ExpressdeviseREST API时如何处理更复杂的查询。 不幸的是,我所能find的所有例子都太简单了。 这个问题的目的是一个简单的例子。 我有团体,我有用户。 在每个小组内,有成员和1个领导。 为了简单起见,我将排除中间件和后/放/删除function。 路线看起来像这样: app.get('/groups', groups.all); app.get('/groups/:groupId', groups.show); app.param('groupId', groups.group); 控制器看起来像这样: /** * Module dependencies. */ var mongoose = require('mongoose'), Group = mongoose.model('Group'), _ = require('lodash'); /** * Find group by id */ exports.group = function(req, res, next, id) { Group.load(id, function(err, group) { if (err) return next(err); if […]
我需要一些帮助,在Node + Express中设置我的rest路线。 我的问题如下: controller.js: module.exports = { findAll: function(req, res) { var users = User.findAll(); res.json(users); } }; user.js的: module.exports = { findAll: function(req, res) { userModel.user.find(function(err, user) { if (!err) { console.log(user); } else { console.log(err); } }); } }; 这console.logs我的用户按预期,但如果我改变console.log位返回: findAll: function(req, res) { return userModel.user.find(function(err, user) { if (!err) { return […]
对于使用express服务器的特殊用例(强制客户端,不响应503状态码重复请求),我根本不需要响应客户端请求。 但是Express在apr之后发送一个502坏的网关。 2分钟,当我只是省略发送结果。 我怎样才能做到这一点? 我试图赶上超时,但这并没有帮助: app.use((req, res, next) => { if (!req.timedout) { next(); return; } console.log('Timeout!') });
我有一个NodeJs REST服务,我们把它叫做NodeRest在我的后端和AngularJs在我的前端。 假设NodeRest与移动应用程序以及Web应用程序一起使用,这是AngularJs应用程序。 NodeRest的体系结构在使用PassportJs时应该解决以下问题: 服务器不应该将用户redirect到Facebook来授权何时 app.get('/auth/facebook', passport.authenticate('facebook')); 已被调用。 如果要redirect它,客户端将不会得到任何东西,因为callbackURL链接到NodeRest httpL // noderest / facebook / callback。 相反,它应该提供redirect的URI,所以我可以把它发回客户端(angularJs,移动等…)。 这样的笑话: app.get('/auth/facebook', passport.authenticate('facebook', function(redirectUri){ //emit socket event to the client with redirect uri as a response data. })); 我在授权过程中决定使用socket.io作为通信通道。 客户: var socket = io.connect(baseUrl); socket.on('auth:facebook:callback:getCalled', function (data) { // callback get called on server side. // user has […]
我正在通过构buildREST API来学习和使用Node和Express。 我没有任何数据库来存储数据,我做了一切在内存中。 比方说,我有一个用户数组: var users = [{"id": "1", "firstName": "John", "lastName": "Doe"}]; 并定义了一个getAllUser函数: exports.getAllUser = function(page, items) { page = (page < 1 ? 1 : page) || 1; items = (items < 1 ? 5 : items) || 5; var indexStart, indexEnd; indexStart = (page – 1) * items; indexEnd = indexStart + […]
我最近在玩Strongloop Loopback (即: http : //loopback.io/ ),这是一个很棒的工具。 我经历了他们的示例,它的工作原理非常好。 但这是基本的例子; 基于下面的简单数据模型(可以开始): 原始样本 现在,如果你考虑一个稍微复杂一点的数据模型…让我们来说一个关于漫画( http://developer.marvel.com/docs )的数据模型,在这个模型中你有几个由几部漫画组成的系列,漫画中你有很多字符。 更新:在系列和漫画之间添加了一个子系列模型 如果我在回送关系中翻译这个: Serie hasMany Sub-series Sub-series belongsTo a Serie Sub-serie hasMany Comics Comic belongsTo a Sub-serie Comic hasMany Characters Character belongsTo a Comic 这是我的问题, 如何获得给定系列的所有字符? 我应该如何描述这种关系 。