Tag: devise模式

在节点js中构build可伸缩的tcp服务器

所以我不确定我的头衔是否是最准确的,但我试图给我最好的补偿。 我最近在面试中被问到这个问题(或多或less,因为我不记得完整的问题,这是我的头顶): 你需要制作一个简单的tcp服务器,可以通过puTTy(或其他任何客户端)访问。 一旦你进入,你需要写: login<用户名>(无所谓用户名)。 一旦你login,你可以做3个操作: showDevices – 将返回设备列表(目前我们有灯和空调) – 我们可以写模拟对象。 我们假设他们有一个数字ID。 切换<deviceId> <on | off> – 打开或closures设备。 SetValue <deviceId> <double> – 设置设备的范围值(空调温度) 重要的事: 分离 – 分离逻辑和通信层。 我们现在使用telenat服务器,但是我们希望将来可以切换到http服务器。 这个过程应该很容易。 可扩展性 – 我们目前有4个操作(login,showDevices,Switch,SetValue) – 编写服务器,以便其他程序员可以很容易地添加另一个操作。 代码应该是不言自明的 任务可以用任何语言书写。 我试图用C#编写,直到我被卡住,无法继续。 最近我更多地进入Node js,并决定再给这个…所以我问你们这个解决scheme一些有用的直接。 如何在通信和逻辑层之间最好地分离? 有什么样的devise模式,我应该实现添加命令更容易? (我看了一下命令devise模式,我不能想象这是否意味着这种情况) 任何能够让我走上正轨的东西(没有告诉我究竟该做什么)将不胜感激。 谢谢!

程序数据库代码与多个数据库调用

所以这是一个相当高层次的问题 我正在devise一个数据库,我不确定在哪里把程序逻辑pipe理复杂的查询。 我看到两个可能的select,如下所示: 1)定义过程数据库代码中的逻辑。 例如,在数据库(例如:PLpgSQL)中: create function A … create function B … create function C … create function main { a = select * from A() … b = select * from B() … where a … c = select * from C() … where b … return c; } 然后在周围的服务器环境中(例如:Node.js): result = query('main'); […]

meteorCMS两个应用程序或全在一个

我目前正在为meteor(基本上是一个类似于WordPress)的CMS工作。 我对这个CMS的devise有一个简单的问题。 我应该把我的CMS分成两个应用程序: – 查看内容的一部分(网站,模板,查看器插件) – 另一个用于pipe理部分(统计,网页控制,post和页面创build等) 要么, 我应该使用不同的路线和安全级别在一个应用程序中进行全部操作。 从我的angular度来看都有利有弊。 鸿沟: 在几台服务器之间共享CMS。 只有一个pipe理应用程序pipe理不同的网站的可能性。 看起来像一个networking。 – 使用pipe理没有查看器应用程序(无头Drupal) – 使用全面的meteor潜力大的应用程序。 一体 : 较小的应用程序,模板更适应pipe理小组。 更容易处理它。 – 面向博客 我真的很感兴趣,你的想法和意见。 谢谢。

调用asynchronous函数只能在callbacknodejs中完成一次

我有代码,以某种方式接收100000数据集。 然后有一个存储必须被访问的方式,只有最后一个添加完成后,下一个可以开始。 以同步的方式,看起来像这样..所以添加方法会阻止。 var data = […]; //100000 datasets var syncstorage = require( 'syncstorage' ); // syncronous storage. for( var i = 0 ; i < data.length() ; i++ ) { syncstorage.add( data[i] ); // will only return once stored } asynchronous存储不阻止,但它会告诉你什么时候完成callback… /////// async storage asyncstorage.add( data[i] , function(err) { /* can only execute another […]

我怎样才能扩大findOneAndUpdatemongoose/ mongodb 500万更新?

我正在与这些后端工作:nodejs,mongoose,mongodb,ironmq。 还有另一个应用程序(一个python FTP服务器)被用作数据源。 这个系统或多或less是这样工作的: 用户上传一个csv的数据转储(近300万条)到FTP服务器(这是定期发生的,每24小时一次) FTP服务器parsing数据,并同步地批量推送到IronMQ队列(2000年)。 我在这里进行批处理来优化内存 另一个应用程序(nodejs)不断轮询该队列中的数据,每10秒钟发送100条消息(这是允许的最大数量),对这些数据起作用,然后更新我的数据库(对每个消息使用findOneAndUpdate )。 我有5个这些应用程序正在运行。 现在除了整个操作完成所需的时间之外,这个设置没有任何明显的问题。 parsing的数据完全被推送到MQ需要将近2个小时,但是这样做并不是什么大问题,因为它是分批完成的。 实际的问题出现在“保存/更新到数据库”部分。 平均而言,每小时在db中更新20-24K条目。 但是,由于我有300万条目,这是花了超过24小时(这是行不通的,因为FTP上的文件每24小时刷新一次,数据将用于在我的应用程序的其他部分执行某些操作)。 我不确定如何从这里继续,但我有几个问题。 我的上述方法可以被认为是最佳/有效的吗? 或者有什么可以改进的? 如何通过db或者通过改变devise来减less整个更新操作所花费的时间? mongodb是否认为这个案例是好的,还是有更好的select? 如果你能提供一些帮助,这将是非常棒的。 请让我知道,如果你们需要更多的信息。

抛出错误,如果导出的模块函数被调用两次

我有一个导出函数的Node.js模块: module.exports = function(data){ return { // return some object } }; 我正在寻找在这里使用单身模式,但没有多less额外的大惊小怪。 这是一个库,可能我的库代码可能不止一次地调用这个函数,但是我需要依赖用户来定义代码,所以我不能保证他们会实现一个合适的单例模式。 如果导出的函数被多次调用,是否有一个好的模式可以用来引发错误? 我在想这样的事情: const fn = require('./user-defined-module'); const someObject = fn(); // next I want to somehow mark this module as having been loaded 为了明确,以下是不好的: var loaded = null; module.exports = function(data){ if(loaded) { return loaded; } // do some stuff return […]

分组链接用户的最佳策略是什么?

有一个城市里有人。 一个城市由一个名为“城市”的mongodb集合代表。 城市里的人不是孤身一人,就是和同一个城市的另一个人走在一起。 模式是: { name: String, people: [ { name: String, status?: String, walkingWith?: String } ] } 如果我的策略是正确的,那么字段“status”和“walkingWith”是我想要使用的。 这里有一些条目: var newyorkPeople = []; newyorkPeople[0] = {"name": "Jack", "status": "alone", "walkingWith": "none"}; newyorkPeople[1] = {"name": "James", "status": "meeting", "walkingWith": "Maria"}; newyorkPeople[2] = {"name": "Robert", "status": "meeting", "walkingWith": "Nina"}; newyorkPeople[3] = {"name": "Steven", "status": "alone", […]

Mongodb模式的不同types的post/文章

我正在开发一个Mongodb,Mongoose和Expressjs应用程序,其中有不同types的文章或post。 例如,有一个只包含URL或地址的URL发布,其中没有文本。 有普通的post,地图post,图片post和一堆其他types。 现在我想在我的应用程序中定义Post的模式。 我有点困惑,如果我应该为每个定义不同的模式,因为他们应该有不同的属性和属性时,他们共享一些属性,或把Post模式中的所有可能的属性,并使用type的名称属性指定共享的post的types。 做这种事情的最佳做法是什么?

如何validation数据库生成的问卷

我有从数据库生成的node.js问卷,现在的问题可以是任何“多选,单选,是 – 否和文本”的随机typesvalidation应该是简单的检查是每个问题的答案。 我知道如何validation表单,但问题是,我的表单有名称,姓氏和电子邮件对话框,所以我需要第一部分在jQuery /buttonid="show-dialog" JavaScriptvalidation,以及我的对话名称,姓氏和第二个button上的电子邮件。 我的看法(start.ejs)看起来像这样: <!DOCTYPE html> <html> <head> <title><%= title %></title> <link rel='stylesheet' href='/stylesheets/style.css' /> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css"> <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script> <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> </head> <body> <h1><%= title %></h1> <form name="questionsForm" id="questionsForm" method="post" action="/save"> <% pitanja.forEach(function(pitanje) { %> <input type="hidden" name="pitanje_id" value="<%= pitanje.id %>" > <input type="hidden" name="upitnik_id" […]

不能添加材料deviseangular度的项目

我尝试添加材料devise到我的项目,但是当我运行npm start我得到错误。 我尝试按照“入门” https://material.angular.io/guide/getting-started进行操作 我做了所有的步骤,这是行不通的。 你知道一些关于angular度+材料devise的教程吗? node_modules/@angular/material/typings/button-toggle/button-toggle.d.ts(31,22): error TS2420: Class 'MdButtonToggleGroup' incorrectly implements interface 'CanDisable'. Property 'disabled' is missing in type 'MdButtonToggleGroup'. node_modules/@angular/material/typings/button-toggle/button-toggle.d.ts(31,50): error TS2507: Type '(new (…args: any[]) => CanDisable) & typeof MdButtonToggleGroupBase' is not a constructor function type. node_modules/@angular/material/typings/button-toggle/button-toggle.d.ts(90,22): error TS2420: Class 'MdButtonToggleGroupMultiple' incorrectly implements interface 'CanDisable'. Property 'disabled' is missing in type […]