我已经在Rails平台上构建应用程序已有一年多了.话虽这么说,如果你可以对Rails进行任何比较,它可能会帮助所有相关方.只是一个想法.
无论如何,我试图将我的头围绕节点和前端框架,ember.我最初对MEAN堆栈的绊脚石很感兴趣.在深入研究了一下之后,我意识到我并不是那么喜欢角度,并开始查找替代品.Ember看起来非常棒,如果没有ng-DOM的所有标记,语法似乎更清晰.我想尝试使用mongoDB,我觉得这种方法会教会我很多东西.
我想,我的问题是快递.Express使用Node时的作用是什么?似乎Ember(甚至是Angular,就此而言)有一个非常富有表现力的路由器.在我对这一切的有限理解中,我认为Express是针对路线的吗?我发现了这个,似乎是一堆MEEN.
MEAN的package.json是庞大的,但我联系的MEEN,非常小,只有快递,猫鼬和请求.我想,另一个问题是MEAN/MEEN堆栈中的不同角色是什么?那有意义吗?我有点乱,哈哈,但我希望继续研究和玩这些东西,直到我有'啊哈!' 那一刻,你知道吗?
mongoose - 似乎是一种更好的与mongoDB交互的方式?
express - 特定于节点的路由?
请求 - 看起来很简单.将外部请求发送到Web上的其他页面.我无法看到MEAN中的等效包装是什么,这真的需要吗?
grunt - 运行一堆东西,以便所有不同的部分可以很好地协同工作?
非常感谢任何解释,链接或帮助.
<%= f.label :category %><br/>
<%= check_box_tag 'category[]', '1', false %>
<%= label_tag 'community', 'community', class: 'category_select', value: '1' %>
<%= check_box_tag 'category[]', '2', false %>
<%= label_tag 'food', 'food', class: 'category_select', value: '2' %>
<%= check_box_tag 'category[]', '3', false %>
<%= label_tag 'music', 'music', class: 'category_select', value: '3' %><br/>
<%= check_box_tag 'category[]', '4', false %>
<%= label_tag 'education', 'education', class: 'category_select', value: '4' %>
<%= check_box_tag 'category[]', '5', false %>
<%= label_tag 'theatre', 'theatre', class: 'category_select', value: '5' %>
<%= …Run Code Online (Sandbox Code Playgroud) http://getbootstrap.com/javascript/#collapse
有没有办法让这个菜单从左向右滑动?我环顾四周并没有看到太多,但我想知道是否有人有更多的洞察力.
我很好奇如何正确使用accepts_nested_attributes_for和f.fields_for.
意见/命令/ new.html.erb
<%= form_for @order, html:{role: "form"} do |f| %>
<%= f.submit "Don't push...", remote: true %>
<%= f.text_field :invoice %>
<%= f.text_field :ordered_on %>
<%= f.text_field :delivered_on %>
<table id='order_form'>
<h3>Details</h3>
<tbody>
<%= render 'order_details/details', f: f %>
</tbody>
<%= link_to 'add line', new_order_detail_path(company_id: params[:company_id]), remote: true %>
<%= link_to 'new box', new_box_path, remote: true %>
</table>
<% end %>
Run Code Online (Sandbox Code Playgroud)
视图/ ORDER_DETAILS/_details.html.erb
<tr class='row0'>
<%= f.fields_for :order_details, child_index: child_index do |d| %>
<td><%= d.collection_select …Run Code Online (Sandbox Code Playgroud) def home
letter = 'A'
@markers = Location.all.to_gmaps4rails do |loc, marker|
marker.infowindow render_to_string(partial: '/locations/info',
locals: {object: loc})
marker.picture({picture: "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=#{letter.next!}|9966FF|000000",
width: 32,
height: 32,
shadow_picture: "http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
shadow_width: 110,
shadow_height: 110,
shadow_anchor: [17,36]})
marker.title "Title - #{loc.name}"
marker.sidebar render_to_string(partial: '/locations/sidebar',
locals: {object: loc})
marker.json({id: loc.id})
end
end
Run Code Online (Sandbox Code Playgroud)
酷的东西.这样可行.它循环通过do loop并递增字母.问题是,它从B开始.我尝试letter在图片中使用,然后在最后使用letter.next!,甚至letter = letter.next,但gmaps向我抛出错误.
有没有办法将"A"之外的东西分配给letter?
<%= link_to event do %>
#bunch of stuff making up the partial.
<% end %>
Run Code Online (Sandbox Code Playgroud)
所以我试图为部分中的每个项目分配一个ID和一个类.我已经看到你必须在哪里调用完整的link_to功能<%= link_to event, { controller: :controller, action: :action }, {class: 'someClass', id: 'someId' } %>.
这对我来说不起作用,因为这样做会阻止我吗?想法?
-:total_cost_with_tax => #<BigDecimal:7fda9d17aaf0,'0.105225E4',18(45)>,
-:total_cost_without_tax => #<BigDecimal:7fda9d17b450,'0.972E3',9(36)>,
-:total_last_installment_amount => #<BigDecimal:7fda9d17b978,'0.8011E2',18(45)>,
-:total_monthly_installment_amount => #<BigDecimal:7fda9d17abb8,'0.8011E2',18(45)>,
-:total_tax => #<BigDecimal:7fda9d17b068,'0.8025E2',18(45)>,
+:total_cost_with_tax => #<BigDecimal:7fda9d0184c8,'0.105225E4',18(36)>,
+:total_cost_without_tax => #<BigDecimal:7fda91ff2b48,'0.972E3',9(27)>,
+:total_last_installment_amount => #<BigDecimal:7fda91fee548,'0.8011E2',18(36)>,
+:total_monthly_installment_amount => #<BigDecimal:7fda91fe72c0,'0.8011E2',18(36)>,
+:total_tax => #<BigDecimal:7fda9d00a2b0,'0.8025E2',18(36)>,
Run Code Online (Sandbox Code Playgroud)
因此,在我的一些测试中,这些都是散落的...... rspec 2,rails 3.我正在比较使用的哈希进行.should eq()比较.我似乎无法使咒语正确.看起来它是一个精确的东西,这似乎很傻.
所以,我明白了.一切都安装好了.不过,我有一些问题,我希望能就如何阅读这些错误日志提供一些指导.我来自Rails,供参考.
首先,与http://mean.io/一起,npm install有一些问题,但更新和清除缓存会解决它.现在我在咕噜咕噜.我得到的第一件事是:
Express app started on port 3000
events.js:72
throw er; // Unhandled 'error' event
^
Error: failed to connect to [localhost:27017]
at null.<anonymous>(D:\Dropbox\Apps\mean_projects\first\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\server.js:540:74)
at EventEmitter.emit (events.js:106:17)
at null.<anonymous> (D:\Dropbox\Apps\mean_projects\first\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connection_pool.js:140:15)
at EventEmitter.emit (events.js:98:17)
at Socket.<anonymous> (D:\Dropbox\Apps\mean_projects\first\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connection.js:478:10)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:441:14
at process._tickCallback (node.js:415:13)
22 Dec 21:03:14 - [nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)
所以,我猜了一下,想也许我不得不手动启动mongo?mongod然后在一个新的控制台,grunt.Express app started on port 3000!活泉.在访问时http://localhost:3000/,我得到了这个怪物:
Error: D:\Dropbox\Apps\mean_projects\first\app\views\layouts\default.jade:1 > …Run Code Online (Sandbox Code Playgroud) 我正在将 redis 发布/订阅系统转换为 redis 流,以便我可以为服务器发送的事件添加一些容错。
订阅传统方式是微不足道的:
import { createClient } from 'redis';
const redisOptions = {
url: `${process.env.REDIS_URL}/0`
}
const redis = createClient(redisOptions);
redis.setMaxListeners(100000);
redis.on("message", (channel, message) => {
console.log(channel);
console.log(message);
});
redis.subscribe('foo');
Run Code Online (Sandbox Code Playgroud)
这将永久阻止,并保持连接打开。在这种情况下,发布到 redis 将添加到您的日志中。
const json = { a: 1, b: 2 };
redis.publish('foo', JSON.stringify(json));
Run Code Online (Sandbox Code Playgroud)
切换到流,你使用XREAD而不是订阅,而XADD不是发布,数据有很大的不同。我正在努力解决的部分是阻塞。
redis.xread('BLOCK', 0, 'STREAMS', 'foo', '$', (err, str) => {
if (err) return console.error('Error reading from stream:', err);
str.forEach(message => {
console.log(message);
});
}
Run Code Online (Sandbox Code Playgroud)
发送消息时,我的“订阅”会接收第一个消息,但不会记录更多消息。
class Foo
include Mongoid::Document
field :name, type: String
embeds_many :bars
end
class Bar
include Mongoid::Document
field :name, type: String
embedded_in :foo
end
Run Code Online (Sandbox Code Playgroud)
有没有办法可以查询所有bars这里?在AR我会做类似的事情Bar.where(name: 'something')- 只要给我所有符合某些标准的酒吧.
就目前而言,我只能在一个foo上查询特定的条形图.`Foo.first.bars.where(名字:'某事').我知道mongoDB没有连接,所以......我很好奇如何解决这个问题.
我准备好一起失去Foo并做一些像:
class Bar
include Mongoid::Document
field :foo_name, type: String
field :name, type: String
end
Run Code Online (Sandbox Code Playgroud) node.js ×3
ruby ×3
accordion ×1
ajax ×1
bigdecimal ×1
collapse ×1
ember.js ×1
express ×1
form-helpers ×1
gmaps4rails ×1
jquery ×1
link-to ×1
mean-stack ×1
mongodb ×1
mongoid ×1
mongoose ×1
pug ×1
redis ×1
rspec ×1