Tag: devise模式

一旦任务完成,如何收集多个callback来调用

我似乎无法find一个通用的解决scheme,即使我觉得我不能成为第一个遇到这个问题。 我也怀疑这可能是我在这里采取了错误的方法。 让我知道。 我有一个Expressjs应用程序与各种API(主要是OAuth2)进行交互。 一旦请求进入应用程序检查是否有一个访问令牌从API获取数据。 万一令牌过期,它会请求一个新的。 现在,当我的应用程序同时收到第二个请求时,要求完全相同的API,我想避免再次调用访问令牌。 我所做的就是使用一个“收集器”,可以为给定的键存储callback。 存储callback的第一个请求获取一个回收器,一旦完成任务就调用callback器。 随后的所有callback都将被排队,并在稍后调用收集器callback。 这是简单的收集器类(CoffeeScript) # Collect callbacks for tasks and execute all once the job is done module.exports = class Collector constructor: ()-> @tasks = {} add: (key, callback)-> unless @tasks[key] # Initiate callback list for the key with first callback @tasks[key] = [callback] return ()=> # Call […]

CouchDB从Node.js中获取用户的所有post

我会开始说我做了很多研究,但是我还是很迷茫。 我有一个工作版本,但这是我可以做到的最无效率的方式。 对于了解规划数据库的最佳方式,我并不是非常有信心,我已经变得依赖于ActiveRecord。 无论如何,我只是想弄清楚这些事情: 找出计划数据库的最佳方式(我应该如何分离文档) find最有效的处理关系 find从服务器查询的好方法 好的,我注意到了一些事情:其一,你不能把我的客户端variables传递给视图,所以使用这种方法是行不通的。 二,我认为可能会有所有的post,然后检查types是否发布,然后返回匹配的文件,但似乎有很多数据移动。 一些代码: 所以我使用Node.js,CouchDB和nano作为中间件。 发布文档: { "_id": "post-slug", "title": "Post Slug", "user": "film42", "date": 1343451412, "type": "post" } 用户文档: { "_id": "film42", "email": "test@example.com", "posts": [ "post-slug", "another-post-slug" ], "type": "user" } 这是我现在如何获取所有post(这真是糟糕!): function buildUserPostArray(array, user, res, i) { db.get(user.posts[i], function(err, post_obj) { if(i < user.posts.length) { array.push(post_obj); […]

使用callback的值

我正在使用ExpressJS在Node.js中开发应用程序。 我是事件驱动开发的新手,我有一个关于事件驱动的体系结构和可见性的基本问题。 我有一个服务,需要做几个MySQL查询,并返回他们作为一个JSON对象。 像这样的东西: exports.someService = function(..) { mysql.query("some select", function(rows…) { // here I want to store the rows in a way to be visible from parent function }); mysql.query("some other select where id=some value from previous select", function(rows…) { res.send(rows from this query + rows from previous query) }); } 我怎样才能做到这一点?

Node.JS作业/后台进程和高可用性

我正在devise一个新的Node.JS应用程序。 我看到了获得高可用性生产环境的许多select和可能性:负载平衡的应用程序和反向代理,Redis集群,MongoDB副本和分片部署等。 我正在计划的解决scheme需要后台进程,在特定的MongoDB表和内存Redis数据上进行一些处理。 工作需要每分钟运行一次,而且不能与同一工作的另一个实例并行运行。 我知道如何使用定时器在Node中构build这种工作。 另一方面,我知道我可以有一些监测过程来探测工作过程,但是我可以看到一个清楚的解决方法,就是如何replace另一个主机中的失败的应用程序。 我发现了一些关于“HA Singleton”(Java世界中的一种模式)的博客文章,以及用于解决这种情况的基于数据库的锁。 也许我可以使用存储在Redis复制数据存储上的锁来实现一个locking机制,其中有多个作业将locking状态合并在一起,但是我想这将很难实现一些“极端”情况(一个作业将locking状态合并以前的工作之后的毫秒)。 如何解决这个国王的情况有什么最佳做法的模式?

DDD + node.js:域逻辑去哪里

我正在尝试使用es6将DDD引入到node.js应用程序中。 我正在为我的数据访问层使用mongoose。 我注意到,mongoose有一个与模型模式绑定的“.methods”属性。 就向实体添加业务逻辑而言,这是否是添加业务逻辑的理想场所,还是应该考虑创build另一个对象,该对象拥有镜像模型模式对象的业务逻辑,并将数据从一个数据复制到另一个数据? 如果我正在使用sequalize,那么这里的首选方法是什么?

了解何时使用事件以及何时使用回叫

有了事件,发起者就会提出一个事件,这个事件将被那些select接收事件的例程接收。 接收者指定将从哪个发起者接收哪些事件。 通过callback,完成后的例程通知调用者完成。 所以我很困惑我应该在哪里使用事件,或者我应该在哪里使用callback,因为我可以完成事件的callback,但会导致在应用程序中创build大量事件。 在编码,使用事件或callback时应遵循什么样的好方法?

如何创build只能由前端访问的私人API?

我一直在网上查找一段时间,但不能理解只在前端和后端之间创build私有API的概念。 我基本上想要做的是有一个API只能通过前端访问,而不是通过卷发,邮递员或其他任何东西。 我有以下设置: 应用程序在Heroku上托pipe,后端在nodejs中 我使用通过我们自己生成的https连接来encryption工具。 我有一个公共的API atm,返回一个string'Hello world' 目前,您可以通过前端或访问www.example.com/api/test来访问它,但是我想要做的是不允许用户手动访问该链接或使用curl或邮递员来获取该链接而只能通过前端访问。 前端是写在Angular 2(如果它是重要的) 请注意,我不打算在网站上有任何用户login,我只是想限制访问API到外部世界,以便只有我的前端才能得到它。 更新使用案例 未来的用例很简单。 我有一个基本的注册forms,要求电子邮件地址和文字说明。 然后,我使用后端的nodemailer,通过使用来自Angular 2的POST请求,将信息发送到gmail。我访问通过req.on('data')和req.on('end')发送的数据并处理它。 我的恐惧是如何确保我不会通过该API获得垃圾邮件,并收到10k电子邮件,因此我希望以某种方式使API只能通过前端访问。

我如何决定一个post是否被一个Mongoose用户喜欢?

我试图做一个function,使用户可以喜欢的职位(无论是用户喜欢的职位,或不喜欢的用户,即不厌恶或投票)。 我的post是具有模式的MongoDB集合中的对象 { title: String, text: String } 而我的用户有架构 { username: String, password: String } 我可以,例如,创build一个数组的post与用户的ID喜欢特定的职位的ID。 它看起来像 { title: String, text: String, likedByUsers: [ObjectID] } 或者我可以在用户创build一个数组的用户喜欢的post的ID,这将是类似的东西 { username: String, password: String, postsLiked: [ObjectID] } 不过,我预计用户会喜欢上千个post,所以我可能会面临MongoDB中对象大小的限制。 所以我想我应该创造一个新的喜欢collections { userId: ObjectID, postId: ObjectID } 但是,我想我应该如何检索它在我的应用程序。 我是否应该存储用户(已login)喜欢的所有post的ID数组,并且在打印每篇post时,我会查看post是否在用户喜欢的post中,然后显示“已经喜欢”button? 或者,我可以在请求查看所有post时发送用户ID,然后为每个post添加一个字段“isLiked”,表示是否可以查找Liked集合中的某个对象,从而匹配post和用户ID?

MongoDB通过外键查询

我有两个集合: 用户: {id:“aaaaaa”年龄:19,性别:“f”} {id:“bbbbbb”年龄:30,性别:“m”} 点评: {id:777777,user_id:“aaaaaa”,文本:“一些评论数据”} {id:888888,user_id:“aaaaaa”,文本:“一些评论数据”} {id:999999,user_id:“bbbbbb”,文本:“一些评论数据”} 我想find所有的评论凡sex=f和age>18 (我不想嵌套,因为评论集合将是巨大的)

NodeJS如何扩展企业应用程序?

假设我有一个企业Java应用程序,基本上做到以下几点: 收集用户input,查询后端数据库(可能是多个),运行一些algorithm(比如说在内存中计算查询的数据集以产生一些统计数据等),然后返回一些html页面中的数据。 我的问题是:如果应用程序的瓶颈在数据库查询上,NodeJS如何在这种情况下帮助我,因为在呈现页面之前,我仍然需要执行所有这些post-dbalgorithm。 应用程序架构如何看起来像?