小编Wag*_*sUK的帖子

如何使用js将空数组保存到mongodb中

基本上我让我的应用程序运行但我遇到了一个问题:如果我传递一个包含空数组的对象要保存,则该数组不会保存到数据库中.我不确定这是js或mongo驱动程序中的问题,但为了保存空数组,我需要像这样传递数组:products: [''].

这是我的mongo文档的结构:

_id: ObjectId(...),
name: 'String',
subcategories: [
    {
        subcategory: 'string',
        products: [
            {
                 name: 'string'
                 price: integer
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

所以在我的前端,我通过ajax调用抓取整个文档,将一个新对象推入子类别数组.新对象如下所示:

{subcategory:'string', products:['']}

这工作正常,直到我需要在数组中插入一个新对象:因为我抓住了整个对象,将新对象推送到数组,前一个看起来像这样:

{subcategory: 'string'}

products:[]在这个过程中丢失了对数组的提及.

我怎么能绕过这个?我需要能够在我的对象中拥有空数组.

编辑

我在前端做了什么:得到了$.get返回的整个对象:

var obj = 
_id: ObjectId(...),
name: 'String',
subcategories: [
    {
        subcategory: 'Subcategory1',
        products: [
            {
                 name: 'string'
                 price: integer
            }
        ]
    }
];
Run Code Online (Sandbox Code Playgroud)

然后在前端我已经在子类别数组中推送了新的对象类别:

data.subcategories.push({subcategory: 'Subcategory2', products: ['']})
Run Code Online (Sandbox Code Playgroud)

其中subcat是一个带有类别名称的字符串.在我的数据库上,我可以看到我已经成功添加了该对象:

var obj = 
_id: ObjectId(...),
name: 'String',
subcategories: [
    {
        subcategory: 'Subcategory1',
        products: …
Run Code Online (Sandbox Code Playgroud)

javascript arrays mongodb node.js

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

是否有可用于Arm芯片的MongoDB 2.4+安装?

我有兴趣使用具有1.7GHz四核芯片的Odroid U3构建一个小型服务器.我确实在Raspberry上安装了MongoDB 2.1.1,但发现其性能远远低于修补之外的任何严重用法.我想知道有一个MongoDB软件包/指令/教程可以安装更新版本的MongoDB.任何建议/帮助将不胜感激

mongodb raspberry-pi odroid

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

如何使用MongoDB删除对象内部的对象(不在数组内部)

假设我有这个结构:

{
    "_id" : ObjectId("52af7c1497bcaf410e000002"),
    "created_at" : ISODate("2013-12-16T22:17:56.219Z"),
    "name" : "Hot",
    "subcategories" : {
        "Loco" : {
            "subcategory" : "Loco",
                "id" : "522423de-fffe-44be-ed3b-93fdd50fdb4f",
                "products" : [ ]
        },
        "Loco2" : {
            "subcategory" : "Loco2",
                "id" : "522423de-fffe-44be-ed3b-93fdd50fd55",
                "products" : [ ]
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从子类别中删除Loco2,使其他所有内容保持不变?

请注意,我的对象选择器为ObjectId,因为其他文档的结构可能具有相同的子类别名称,且属于不同的文档。例如,我还可以有另一个像这样的对象:

{
    "_id" : ObjectId("52af7c1497bcaf410e000003"),
    "created_at" : ISODate("2013-12-16T22:17:56.219Z"),
    "name" : "Medium",
    "subcategories" : {
        "Loco" : {
            "subcategory" : "Loco",
                "id" : "522423de-fffe-44be-ed3b-93fdd50332b4f",
                "products" : [ ]
        },
        "Loco2" : {
            "subcategory" : "Loco2",
                "id" …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js

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

如何将日期字符串从Rails转换为Swift

请耐心等待我,因为我是Swift的新手:我正在编写一个小应用程序,它调用返回一些数据的API(Rails).我遇到的问题是API提供的日期是这样的:yyyy-MM-dd'T'HH:mm:sssZ我的功能预计yyyy-MM-dd'T'HH:mm:ssZ 请注意额外的秒

这是我的功能:

public func dateFromString(date: String, format: String) -> NSDate {

    if dateFormatter == nil {
        dateFormatter = NSDateFormatter()
    }

    dateFormatter!.dateFormat = format
    return dateFormatter!.dateFromString(date)!
}
Run Code Online (Sandbox Code Playgroud)

在控制台上,当我尝试运行应用程序时,我得到了这个:

date String "2015-04-13T12:48:23.310Z"

format String "yyyy-MM-dd'T'HH:mm:ssZ"

关于如何解决这个问题的任何想法?

datetime ruby-on-rails date ios swift

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

如何使用authenticate_or_request_with_http_token方法

我在我的仅Rails API应用中添加了一些身份验证,例如在application_controller.rb中:

def is_admin
  authenticate_or_request_with_http_token do |token, options|
    if User.find_by(:auth_token => token)
      value = true
    else 
      value = false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

admin = is_admin
if admin
  @voices = Voice.all.map do |voice| 
    voice.format
  end
else
  @voices = 'Something else'
end
Run Code Online (Sandbox Code Playgroud)

当我登录时,一切都按预期工作,但是,当我未登录时,出现以下错误: Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, …

authentication ruby-on-rails

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

如何让使用 Puma 和 Capistrano 部署的 Rails 应用程序在重新启动时启动

我已经成功使用 Capistrano 部署了 Rails 4、Puma、Nginx 应用程序。当我部署时cap production deploy一切都很好。我的问题是,如果服务器由于某种原因重新启动或者崩溃,它不会重新启动。

\n\n

我在 DigitalOcean 上使用 Debian 8。Debian 8 似乎使用了,所以我按照Pumasystemd的说明进行操作,但它不起作用。经过一番研究,我发现了更多的脚本,其中最合理的一个是:

\n\n
[Unit]\nDescription=Rails-Puma Webserver\n\n[Service]\nType=simple\nUser=myuser\nWorkingDirectory=/home/myuser/apps/myapp\nExecStart=/home/myuser/.rvm/rubies/ruby-2.2.2/bin/systemd_rails server -e production\nTimeoutSec=15\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n\n

我保存了上面的文件,然后/etc/systemd/system/rails-puma.service启用了它:sudo systemctl enable rails.service最后启动了它:sudo systemctl start rails-puma.service

\n\n

不幸的是这没有用。这是以下结果sudo systemctl status rails-puma.service

\n\n
    \xe2\x97\x8f rails-puma.service - Rails-Puma Webserver\n   Loaded: loaded (/etc/systemd/system/rails-puma.service; enabled)\n   Active: failed (Result: start-limit) since Thu 2016-07-07 12:11:58 EDT; 4s ago\n  Process: 4373 ExecStart=/home/myuser/.rvm/rubies/ruby-2.2.2/bin/systemd_rails server -e production (code=exited, status=203/EXEC)\n Main PID: 4373 (code=exited, …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails nginx systemd puma

3
推荐指数
1
解决办法
2821
查看次数

如何将 Sidekiq 延迟与工作人员一起使用

我有一个工作人员对外部 API 进行多次调用的情况。问题是我们有一个阈值,即每小时可以调用这个 API 的次数。

我想要做的是创建一个工作程序,它将对这个外部 API 进行如此多的顺序调用。如果在这些调用之间我们收到错误,因为我们已经达到了我们在那个小时内允许的连接数,那么工作人员将保存文档并安排一个新工作人员在稍后的时间完成剩余的 API 调用(也许1, 2 小时后。理想情况下,这应该是可配置的,例如:10 分钟、1 小时等)。

有什么办法可以做到这一点吗?

ruby-on-rails sidekiq

3
推荐指数
1
解决办法
3580
查看次数

如何使用mgo插入文档并获取返回值

作为记录,我正在学习Go。我正在尝试使用mgo包,我想插入一个新文档,并将这个新创建的文档返回给用户(我正在尝试编写一个基本的API)。我编写了以下代码:

编辑:这是模型的结构:

type Book struct {
  ISBN    string   `json:"isbn"`
  Title   string   `json:"title"`
  Authors []string `json:"authors"`
  Price   string   `json:"price"`
}

session := s.Copy()
defer session.Close()

var book Book
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&book)
if err != nil {
    ErrorWithJSON(w, "Incorrect body", http.StatusBadRequest)
    return
}

c := session.DB("store").C("books")

info, err := c.Upsert(nil, book)

if err != nil {
    ErrorWithJSON(w, "Database error", http.StatusInternalServerError)
log.Println("Failed insert book: ", err)
    return
}

respBody, err := json.MarshalIndent(info, "", "  ")
if err != nil { …
Run Code Online (Sandbox Code Playgroud)

go mongodb mgo

3
推荐指数
1
解决办法
2557
查看次数

如何让Gunskcorn运行Flask应用

我是Flask / Python的新手,这个问题可能很愚蠢,或者我可能缺少明显的东西,所以请耐心等待。

我创建了一个Flask应用,其结构如下:

myproject
  api
    __init__.py
    api.py
    application.py
    config.py
    models.py
  migrations
    ...
  appserver.py
  manage.py
  Procfile
  requirements.txt
Run Code Online (Sandbox Code Playgroud)

我的内容appserver.py

from api.application import create_app

if __name__ == '__main__':
  create_app = create_app()
  create_app.run()
Run Code Online (Sandbox Code Playgroud)

我的内容api/application.py

from flask import Flask


def create_app(app_name='MYAPPNAME'):
  app = Flask(app_name)
  app.config.from_object('api.config.DevelopmentConfig')

  from api.api import api
  app.register_blueprint(api, url_prefix='/api')

  from api.models import db
  db.init_app(app)

  return app
Run Code Online (Sandbox Code Playgroud)

当我在本地运行服务器时,python appserver.py一切正常。当我尝试像这样运行gunicorn时:出现gunicorn --bind 127.0.0.1:5000 appserver:create_app此错误:TypeError: create_app() takes from 0 to 1 positional arguments but 2 were given …

flask python-3.x

3
推荐指数
2
解决办法
1359
查看次数

如何将 Omniauth Asana 与仅限 Rails API 的应用程序结合使用

我有一个仅限 Rails 5 API 的应用程序和一个 Angular JS 前端应用程序,并且希望与 Asana API 集成。我正在使用ruby-asana,omniauthomniauth-asana宝石。

我使用 Asana 的JS 库开始请求,如下所示:

var client = Asana.Client.create({
      clientId: 172706773623703,
      clientSecret: '<client_secret>',
      redirectUri: '<redirect_url>'
    });
    client.useOauth({
      flowType: Asana.auth.PopFlow
    });
Run Code Online (Sandbox Code Playgroud)

上面的内容确实将我重定向到可以登录的 Asana。我给出了redirectUri一个后端路由(仅限 Rails 5 API),它应该处理剩余的身份验证(仅使用 JS 我只得到一个无法自我更新的临时令牌,这意味着用户每次使用令牌时都必须进行身份验证过期。如果我正确理解文档的话)。

因此,在我创建的用于处理路线的控制器上,我有以下内容(来自 Asana 文档中的示例):

require 'omniauth-asana'
use OmniAuth::Strategies::Asana, <secret>, <secret>

creds = request.env["omniauth.auth"]["credentials"].tap { |h| h.delete('expires') }
strategy = request.env["omniauth.strategy"]
access_token = OAuth2::AccessToken.from_hash(strategy.client, creds).refresh!
$client = Asana::Client.new do |c|
  c.authentication :oauth2, access_token
end
Run Code Online (Sandbox Code Playgroud)

现在,上面的内容不起作用,因为 1) …

ruby api ruby-on-rails asana

2
推荐指数
1
解决办法
1048
查看次数