小编num*_*407的帖子

MongoDB原子"findOrCreate":findOne,如果不存在则插入,但不更新

正如标题所说,我想通过_id执行文档的查找(一个),如果不存在,则创建它,然后是否找到它或者是否已创建它,让它在回调中返回.

如果它存在,我不想更新它,因为我读过findAndModify.我在Stackoverflow上看到了很多关于此问题的其他问题,但同样,不希望更新任何内容.

我不确定是否通过创建(不存在),这实际上是每个人都在谈论的更新,它都是如此令人困惑:(

mongodb node.js

108
推荐指数
3
解决办法
5万
查看次数

minibufexplorer(vim)的替代品?

minibufexplorer是vim的持久缓冲管理器,它位于自己的窗口中.它显示了您打开的所有缓冲区,其中包含当前在窗口中可见的颜色指示符以及未保存的更改.

这是一个很棒的插件,我一直迷上它.没有持久的缓冲显示,我发现我现在感到迷茫.

问题是,minibufexpl往往会妨碍其他窗口控件.由于它是一个普通的vim窗口,它表现得像一个,如果你想说,旋转你的其他工作窗口会导致问题.Minibufexplorer的窗口也会旋转,这显然不太理想.

我真正需要的是一个持久显示打开缓冲区的插件,但不像窗口那样.我不需要文件导航或其他任何东西,因为我使用其他方法.甚至可能像扩展状态栏那样能够在minibufexpl等缓冲区上显示信息呢?

vim minibufexplorer

34
推荐指数
5
解决办法
2万
查看次数

在Heroku应用程序中实现维护页面的智能方法是什么?

是否有一种干净,优雅的方式在Heroku应用程序中实现维护页面?因此,如果出现问题,您可以非常轻松地转换开关,维护页面可以满足所有要求吗?最好是一种不需要推动的方式?

想法?谢谢

ruby-on-rails heroku ruby-on-rails-3

11
推荐指数
2
解决办法
5604
查看次数

form_for自从升级到rails 3.1以来错误的参数数量(3个用于2)

在将我的应用程序移植到rails 3.1之前,这个form_for曾经工作过

<div class="form-box" style="padding-left:1em;">
  <%
     action = @existing_mass.nil? ? "add_to_power_plant": "update_power_plant_substrate";
     submit_button_label = @existing_mass.nil? ? 'Add': 'Update';
  %>

  <%= form_for :substrate_mass, @substrate_mass, :remote => true, :url => { :action => action, :substrate_id => @substrate_mass.substrate  } do |f| %>
    <div>
      <%= f.label :quantity_per_year, "Quantity" %>
      <%= f.text_field :quantity_per_year, :size => 5, :onclick => 'this.select();', :value => @substrate_mass.quantity_per_year %>
    </div>

    <div class="actions" style="float:right;">
      <%= f.submit submit_button_label %>
    </div>
    <br/> 
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

我花了4个多小时试图弄清楚出了什么问题......我肯定不知道了什么

我收到错误:

错误的参数数量(3个用于2)

请注意,我正在尝试更新不是activerecord对象的变量.它只是一个未存储在数据库中的对象.

希望有人能提供帮助.

干杯

ruby-on-rails form-for ruby-on-rails-3.1

10
推荐指数
1
解决办法
6634
查看次数

在restful/resourceful控制器中,jails模板的Rails最佳实践是什么?

首先,2种常见(基本)方法:

# returning from some FoosController method
respond_to do |format|
  # 1. render the out a json representation
  format.json { render :json => @foo }

  # 2. render an RJS template, say update.js.erb
  format.js { render }
end

# in update.js.erb
$('#foo').html("<%= escape_javascript(render(@foo)) %>")
Run Code Online (Sandbox Code Playgroud)

这些显然是简单的案例,但我想说明我在说什么.我相信这些也是rails 3中默认响应者所期望的情况(动作命名的默认模板或在资源上调用_#{format}.)


问题

使用1,您可以在视图方面获得完全的灵活性而无需担心模板,但您必须通过javascript直接操作DOM.您无法访问助手,部分等.

使用2,您可以使用部分和帮助程序,但是您可以使用一个模板(默认情况下至少).所有使JS调用FoosController的视图都使用相同的模板,这不是很灵活.


其他三种方法(没有一个真正令人满意)

1.)事先将我需要的部分/助手转移到javascript中,然后将它们插入到页面中,使用字符串替换将它们定制为返回的结果(在名称,id等中进行子搜索).

2.)将视图逻辑放在模板中.例如,寻找一个特定的DOM元素,如果它存在则执行一个操作,如果不存在则执行另一个元素.

3.)在控制器中放置逻辑以呈现不同的模板.例如,在多态属于可以为comments/foo或posts/foo调用更新的地方,渲染commnts/foos/update.js.erb与posts/foos/update.js.erb.


我已经使用了所有这些(可能还有其他我没想过的).通常在同一个应用程序中,这会导致令人困惑的代码.这种事情有最好的做法吗?这似乎是一个常见的用例,您希望通过来自不同视图的Ajax操作调用控制器并期望发生不同的事情(无需执行诸如转义和字符串替换部分和帮助程序客户端等繁琐的事情).

有什么想法吗?

javascript rest resources templates ruby-on-rails

8
推荐指数
1
解决办法
2016
查看次数

docker-compose卷未安装到主机目录

我正在使用docker-compose进行部署,使用2 docker-compose.yml设置我在本地构建映像并从服务器上的docker hub拉出.

除了构建vs拉图像之外,卷配置也是相同的.

本地:

app:
  build: .
  volumes:
    - "/data/volume:/volume"
Run Code Online (Sandbox Code Playgroud)

并在服务器上:

app:
  image: username/repo:tag
  volumes:
    - "/data/volume:/volume"
Run Code Online (Sandbox Code Playgroud)

在我的Dockerfile中:

volume /volume
Run Code Online (Sandbox Code Playgroud)

本地我的卷安装到指定的目录很好,应用程序创建的文件持久存储在容器外.但是,在部署服务器上,这不会发生.

文件然而,创建,通过持续展开时,即使我的部署脚本运行docker-compose down -v这大概删除名为&容器上的匿名卷.

我确定我做错了什么,但我看不出是什么.这可能是一个缓存问题吗?初始部署时的卷配置不同.

更多信息:

实际上我似乎无法在部署之间强制丢失图像.我跑了:

docker-compose down -v --rmi all --remove-orphans
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker volume rm $(docker volume ls -q)
Run Code Online (Sandbox Code Playgroud)

...我认为会给我一个干净的石板进行重新部署,然后:

docker pull username/repo:tag
docker-compose build --no-cache --force-rm
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

...并且应该在已安装卷中的文件仍然存在,并且磁盘上已安装的目录中仍然没有任何内容.有任何想法吗?

还有更多信息

docker inspect <container>在服务器上运行会产生如下的挂载配置:

"Mounts": [ …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

7
推荐指数
2
解决办法
9511
查看次数

对 mongodb 中的动态、非唯一字段进行查询和排序时的范围分页

当您基于单个唯一字段进行分页时,范围分页是简单的,但是在具有非唯一字段(可能一次有多个字段)的情况下,它是如何工作的(如果有的话)?

TL;DR:使用基于范围的分页对“高级搜索”类型查询进行分页和排序是否合理或可能?这意味着对用户选择的(可能是非唯一的)字段进行查询和排序。

例如,假设我想对文字游戏中玩过的文字文档的搜索进行分页。假设每个文档都有 ascore和 a word,我想让用户对这些字段进行过滤和排序。这两个领域都不是独一无二的。假设相关字段有一个排序索引。

从简单开始,假设用户想要查看所有得分为 10 的单词:

// page 1
db.words.find({score: 10}).limit(pp)
// page 2, all words with the score, ranged on a unique _id, easy enough!
db.words.find({score: 10, _id: {$gt: last_id}}).limit(pp)
Run Code Online (Sandbox Code Playgroud)

但如果用户想要获取所有得分低于 10 的单词怎么办?

// page 1
db.words.find({score: {$lt: 10}}).limit(pp)
// page 2, getting ugly...
db.words.find({
  // OR because we need everything lt the last score, but also docs with
  // the *same* score as the last score we haven't seen yet …
Run Code Online (Sandbox Code Playgroud)

pagination mongodb

5
推荐指数
1
解决办法
1562
查看次数

mongodb聚合:如何使用min/max而不是值返回对象

假设我的文档有一个date字段,我想在聚合中获取第一个和最后一个出现的文档.使用$group$min$max,很容易获得日期本身,例如:

db.mycollection.aggregate([
  { $group: {
      _id: 1, // for the example say I'm grouping them all ... 
      first: { $min: "$date" },
      result: { $push: { ... } } // ... and returning them all
  }}
])
Run Code Online (Sandbox Code Playgroud)

这将返回如下结果:

{ _id: 1, first: ISODate(...), result: [...] }
Run Code Online (Sandbox Code Playgroud)

但我想要的不是第一次约会,而是第一次约会的结果.我怎样才能使用管道?

我一直在修改$project用于扫描数组之后的具有匹配日期的对象,看起来它可以工作,但我想我会看到是否有一个正确的方法来做到这一点之后我偶然发现了一个不正确的.

mongodb

4
推荐指数
1
解决办法
4991
查看次数