草庐IT

angularjs - mongoose/mongodb 不会用 PUT 更新

coder 2023-11-02 原文

我目前是 Express 和 failure 方面的学生。

我目前的头痛是 PUT 不是 PUT-ting。我的应用程序有一大堆数据,我需要在用户第一次登录时上传这些数据。之后我想它会更快,因为我可以只上传更改过的内容。这个理论不太行得通。

步骤是:

  1. 用户首次登录,通过身份验证
  2. 应用程序在 Values 模式中创建一个新条目,其中只有必填字段
  3. 应用翻转用户模式中的开关以显示创建的值
  4. App 然后将其余值放入该现有架构。

我将 2 和 4 分成两部分,因为当我把它分成两部分时,出于某种原因,Mongoose 开始发出嘶嘶声。除了现在,它实际上并没有在第 4 步放置任何东西,甚至在用户编辑它时(通过应用程序中的表单)。就好像它停止了倾听,或者什么的。

这是值架构的样子(因为它太大而被截断):

    var ValueSchema = new Schema({
        user_id: {
            type: String,
            required: true,
            unique: true
        },
        base: [{
            type: String,
            required: true
        }],
        value1: [ String ],
        value2: [ String ],
        value3: [ String ],
        value4: [ String ]
    });

这是 GETting 和 PUTting 的部分:

    // ------------------ FORM VALUES
    router.route('/values/:user_id')
        // create
        .post(function(req, res) {
            var task = req.body;
            var value = new Value(task);
            value.save(function(err) {
                if (err) {
                    res.json(err);
                } else {
                    res.write("success");
                }
            });
        })
        // update
        .put(function(req, res) {
            var values = req.body;
            var user_id = req.params.user_id;
            Value.update({user_id: user_id}, function(err, values) {
                if (!err) {
                    res.json("okay");
                } else {
                    res.write("fail");
                }
            });
        })
        // view
        .get(function(req, res) {
            var id = req.params.user_id;
            Value.find({'user_id':id}, function(err, value) {
                if (!err) {
                    res.send(value);
                } else {
                    res.write("fail");
                }
            });
        })
    });

由于我仍然无法弄清楚的原因,第 2 步需要永远。最重要的是,Firefox 发送没有 token 的消息,但 http 调用在“网络”选项卡和服务器本身的输出中显示为成功。这是其中一个 http 调用:

        return $http({
            method: 'PUT',
            url: '/api/values/' + userId,
            data: values,
            headers: {
                'x-access-token':  token
            }
        })
        .then(function (response) {
            // chained to next step
            // etc

对我来说看起来像教科书,但是当我在任何 PUT 之后 checkin Postman 时,值条目看起来像这样:

    [
        {
            "_id": "56513f140dab13e932682cf2",
            "user_id": "5651f7454cd0c2543ca5202f",
            "__v": 0,
            "value1": [],
            "value2": [],
            "value3": [],
            "value4": []
        }
    ]

在第一次 POST 之后,它根本就没有更新。疯狂的是我可以更新其他两个模式并且一切正常,并且它们与 Value 模式具有相同的模式。帮助!我错过了什么?

提前致谢!

最佳答案

你的 update() 方法缺少更新文档:

// update
.put(function(req, res) {
    var values = req.body;
    var user_id = req.params.user_id;
    Value.update({user_id: user_id}, values, function(err, values) {
        if (!err) {
            res.json("okay");
        } else {
            res.write("fail");
        }
    });
})

关于angularjs - mongoose/mongodb 不会用 PUT 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33859055/

有关angularjs - mongoose/mongodb 不会用 PUT 更新的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  5. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  6. objective-c - 在设置 Cocoa Pods 和安装 Ruby 更新时出错 - 2

    我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U

  7. ruby-on-rails - Rails Associations 的更新方法是什么? - 2

    这太简单了,太荒谬了,我在任何地方都找不到关于它的任何信息,包括API文档和Rails源代码:我有一个:belongs_to关联,我开始理解当您没有关联时您在Controller中调用的正常模型方法与您有关联时调用的方法略有不同。例如,我的关联在创建Controller操作时运行良好:@user=current_user@building=Building.new(params[:building])respond_todo|format|if@user.buildings.create(params[:building])#etcetera但我找不到关于更新如何工作的文档:@user

  8. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  9. ruby 代码 : why put colon in front of variable name (inside initialize method) - 2

    我遇到了一些Ruby代码,我试图理解为什么变量在initialize方法声明中的名称末尾有冒号。冒号有什么原因吗?attr_reader:var1,:var2definitialize(var1:,var2:)@var1=var1@var2=var2end 最佳答案 那些是关键字参数。您可以按名称而非位置使用它们。例如ThatClass.new(var1:42,var2:"foo")或ThatClass.new(var2:"foo",var1:42)Anarticleaboutkeywordargumentsbythoughtbot

  10. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

随机推荐