我想从父母rest服务打电话给孩子rest服务。 子服务被调用的次数取决于父rest服务的参数。 一旦我用不同的参数同时调用所有的子服务实例。 我想结合来自所有子服务实例的响应。 我正在使用下面的代码段。 但我不想使用超时。 它应该是超时,或者当所有的小孩服务的呼叫都结束的时候,哪一个更less。 for( i=0; i<length; i++) { url=accountID[i] +'+'+sortcode[i] +'+' +accountHolderName[i]; micro(url ,filter[i],function(resp) { this.resutlObject[count]=resp; console.log("count"+count); count=count+1; }.bind( {resutlObject: resutlObject} )); }//end of for setTimeout(function () { console.log("in time out"); res.end(JSON.stringify(resutlObject || {}, null, 2)); },500);
我build立一个应用程序,其中包含: 前端angularjs 后端快速应用程序 事实是,两者都使用相同的业务规则进行validation,一次在前端,另一个在后端,以保持良好的导航性(locking在前面)和良好的业务pipe理(locking在后面)。 这样,我想知道如何在一个地方pipe理双方的业务规则。 这样,我find了两个解决scheme: – 创build一个npm模块 优点:这可以与版本控制,由于JavaScript技术,从客户端和背面访问 CONST:只适用于javascript,如果将来我需要增加一项新技术,那么我必须为相关技术做好准备。 还有一个事实,我必须做出远程请求,并使用networking。 正是我不想做我的客户 – 创build一个只公开我的业务规则的REST API 优点:从任何技术都可以从客户端和后端访问 CONST:networking延迟,并需要从我的客户端pipe理另一项服务 我想知道什么是一个好的解决scheme,为什么?
我有一个基于angular度的应用程序在后端的节点。 我正在使用JSON合并修补程序来处理多个表上的数据更新。 我使用这个npm包通过比较原始数据和从前端接收到的更新数据来生成补丁。 它返回如下所示的内容: { op:"replace", path="/firstName", value:"Albert"}, { op:"replace", path="/contactDetails/phoneNumbers/0/number", value:"123"}, { op:"add", path="/contactDetails/phoneNumbers/1", value:{number:"456"}}]; 它给了我需要在不同的表上执行的操作列表。 我遍历这些补丁,找出我需要更新的表格如下: 到目前为止,我还没有build立任何东西,但这是我将如何继续。 _.each(patches, function(patch){ switch(patch.op) { case 'add': var table = patch.path.split('/')[1]; var value = patch.value break; case 'replace': //so forth break; case 'remove': //so forth break; } }); 以下是我想知道的:1.是否有更好的方法来处理多个表的JSON更新? 2.是否有更好的方法来处理SQL更新的JSON合并修补程序? 3.是否有任何现有的软件包/工具,使这个过程更简单?
为Web用户创buildExpress/Passport WebApp并在一个项目中使用jsonwebtoken授权保护REST API是否是一个好习惯? 我现在有一个WebApp, local-passportlogin和一些HTML视图的受保护的端点。 我可以使用jsonwebtoken保护添加passport-local未受保护的REST端点,但使用两个不同的身份validation选项似乎是一种不好的做法。 这是我的第一个Node.js项目,所以我不知道。 没有更好的方法来创build我想创build的东西吗?
我想为我的Node.js API编写自动化testing,而且我已经开始使用Mocha和Chai,使用chai-http来pipe理请求。 我有一个路由www.example.com/users,并成功地编写了自动化testing注册用户和login用户,所以我以为我在路上,但现在几乎所有其他路线需要用户进行身份validation! 由于我在testing期间嘲笑数据库(使用mongoose进行模仿),我已经注意到了这种依赖关系。 但是,这带来了一个问题,我如何获得一个用户身份validation,但仍然不暴露我的testing多个,可能会改变的代码段? 通过程序的stream程相对简单:在请求安全资源时,会有中间件对用户进行身份validation,然后将user对象附加到请求上。 那么这个user对象就可以让路由访问用户的信息并调用数据库。 所以,我想一个理想的解决scheme将一个user对象附加到请求对象,一旦调用了API。 由于我是相对较新的testing,我欢迎任何反馈,让我洞察到更好的testing程序。
我正在编写我的第一个“solo”nodejs webapp。 它基于以前的应用程序(我按照某种教程/课程编码),这是一个Express REST API,允许您添加/删除/更新/列出待办事项列表。 我也使用jwt / bcrypt实现了用户authentication。 所有这些都存储在MongoDB数据库中。 还要注意所有的端点都返回JSON。 我现在正试图添加一个前端的应用程序。 API端点在/api/endpoint1 , /api/endpoint2等等,视图在/view1 , /view2等上呈现。我这样做的目的是让我可以从普通的JSON得到响应API,或者在呈现的网页中显示它。 我开始使用jQuery的ajax来打电话,但我意识到这不是我想这样做的方式。 我删除了我的网页上的所有js脚本,并开始直接在服务器上工作,渲染从api获取的信息页面。 这是我现在所拥有的: server.js(主文件)[sample] // RENDER 'GET TODOs' app.get('/todos', authenticate, (req, res) => { let auth = req.cookies['x-auth']; request({ url: 'http://localhost:3000/api/todos', headers: { 'x-auth': auth } }, function (error, response, body) { if (error || response.statusCode !== 200) { […]
UPDATE 我已经把问题的范围缩小到了主要问题上: 使用ResourceJS的嵌套资源中的示例代码需要两个Mongoose模式,即PARENT和CHILD,并创build这些REST资源: /parent – (GET), (POST) /parent/:parentId – (GET), (PUT), (DELETE) /parent/:parentId/child – (GET), (POST) /parent/:parentId/child/:childId – (GET), (PUT), (DELETE) 父母和孩子是2个模型; 一个宣布另一个的父母: var Parent = mongoose.model('Parent', new mongoose.Schema({ name: { type: String, required: true } })); var Child = mongoose.model('Child', new mongoose.Schema({ name: { type: String, required: true }, parent: { type: mongoose.Schema.Types.ObjectId, ref: […]
我的同事在我们的API中开发了一个如下所示的约定: … return Subscription.destroy({ where: { id: req.params.id } }).then((count) => { if (count === 0) { Logger.log('warn', '- subscriptionController.delete : no record found') return res.status(404).json(['No record found.']) } Logger.log('info', '- subscriptionController.delete') return res.status(200).end() … 理由是:如果没有findlogging,那么这是一个无效的请求,因为用户试图删除一条logging,但没有发生。 在我看来,即使没有logging被删除,只要提供给控制器的ID是有效的ID,就应该返回200。 什么是正确的实施?
我正在构build应该返回映像的服务。 图像存储在S3上,当我发送一个响应我想签名图像数据,并发送签名作为头,以便接收机可以validation它。 目前我正在使用pipe但我不知道在这种情况下应该签署什么,任何帮助表示赞赏 router.get('/:id', (req, res, next) => { const s3 = new AWS.S3(AWS_CONFIG); const stream = s3.getObject(options).createReadStream(); res.set('Content-Type', 'image/jpeg'); stream.pipe(res); });
这是我想用其他API实现的。 1.用户上传文件到AWS s3(> 20Mb)。 function(req,res){ //initiate multipart upload.with asynchronous request s3.multipartUpload(function(err,success){ //when upload complete do step 2 }); res.send({ 'status':'pending', 'message':'Upload is added to queue ' }); } 2.成功上传后,用户需要添加更多关于上传文件的信息(加载下一页input一些元数据,这将启动另一个REST API)。 由于file upload是完全asynchronous的,我只能在file upload后才能加载元数据屏幕?