Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用AngularJs更新mongoDB中的数据_Angularjs_Mongodb_Mean Stack - Fatal编程技术网

无法使用AngularJs更新mongoDB中的数据

无法使用AngularJs更新mongoDB中的数据,angularjs,mongodb,mean-stack,Angularjs,Mongodb,Mean Stack,当我试图更改博客的状态时,数据库中的状态没有更新。状态为字符串字段,最初在数据库中存储为0 api.post('/statuschange', function(req, res){ Blog.find({_id: req.query.blog_id}).update({$set:{'status': req.body.status}}, function (err, status) { if(err){ res.send(err

当我试图更改博客的状态时,数据库中的状态没有更新。状态为字符串字段,最初在数据库中存储为0

api.post('/statuschange', function(req, res){
    Blog.find({_id: req.query.blog_id}).update({$set:{'status': req.body.status}}, function (err, status) {

            if(err){
                res.send(err);
                return;
            }

            if(req.body.status == '1') {
                res.json('Blog added')
                    return;
                }

            if(req.body.status == '-1'){
                 res.json('Blog not added');
                     return;
                 }
    });
})
api正在邮递员上成功运行

工厂文件

angular.module('blogfact', ['authService'])

.factory('blogFactory', function($http, AuthToken){

var factory = {};
var token = AuthToken.getToken();

factory.changestatus = function(info, callback){

     $http({
        url: 'api/statuschange',
        method:'POST',
        headers:{'x-access-token':token},
        params:{'blog_id': info},
    })
        .success(function(response){
            callback(response)
        })
}
return factory
})
控制器文件

angular.module('blogCtrl', ['blogfact']);

.controller('BlogController', function(blogFactory, $routeParams){

    var that=this;
    blogid = $routeParams.id;
    var getthatBlog = function(){
        blogFactory.getthatBlog(blogid, function(data){
        //console.log('[CONTROLLER] That Blog:',data);
        that.blog = data;
    })
}
    this.changestatus = function(info){
        blogFactory.changestatus(info, function(data){
            getthatBlog();
        })
        }
    })
html文件

<div ng-controller="BlogController as blog">
<textarea ng-model="blog.status"></textarea>
<button class="btn btn-success" ng-click="blog.changestatus(blog._id)">Submit</button>
</div>

提交
  • 您正在
    params
    中发送数据,并从
    req.body
    获取数据。 您应该使用
    req.query
    req.param
    。否则,发送身体上的数据,如下所示

    $http({ url:'api/statuschange', 方法:“POST”, 参数:{'blog_id':info}, 数据:{“状态”:1} })

  • 您正在客户端传递1个参数,在服务器端获得两个参数(
    req.body.status
    ,req.query.blog\u id)

  • 标记的值来自哪里

  • 检查测试代码的简化方法

    让我们在客户端修改采集数据,但要在服务器上实际更新数据,需要将更改通知服务器(通过API)

    有几种方法可以做到这一点,但如果您想要从客户端到服务器的无缝更新,可以试试meteor


    如果您的问题是关于MongoDB中的值没有更新,那么这是由于您的
    POST
    请求中缺少
    状态
    数据造成的

    我建议您在HTML中发送整个
    blog
    对象,这样您也可以获得blog的状态:

    现在,您应该能够通过
    req.body.status
    在NodeJS服务器后端获取博客状态数据

    更新 使用mongoose的
    update
    方法尝试以下操作:

    Blog.update({_id: req.query.blog_id}, {status: req.body.status}, function(err, numAffected){
       ...
    });
    
    或者,或者:

    Blog.findOne({_id: req.query.blog_id}, function(err, blog){
        blog.status = req.body.status;
        blog.save();
    });
    

    您是否观察过浏览器控制台是否存在任何客户端/服务器端错误。您的问题有点不清楚。当然不是“更新数据库”吗?发送的数据可能有问题吗?还是服务器端代码有问题?(此外,如果您编辑问题并设置代码格式以便于阅读,也会有所帮助。)@AhmadBaktashHayeri hi。。我不太懂这个意思。。但是每当我转到html页面更改状态时。。浏览器控制台显示从浏览器返回的博客信息blogfactory@Jeroen我不明白数据是如何发送到html文件的,或者我应该在html文件中传递什么来更新状态。。api工作正常,但问题仍然存在。。!!我不理解新值(我正在输入)是如何发送的,将
    this.changestatus
    更改为
    this.changestatus
    您是否检查了node.js上的值?我不知道您到底想说什么。。api在postmanJust print中成功运行。在函数
    api.post('/statuschange',函数(req,res){
    中打印
    console.log(req.body)
    ,然后重新启动服务器,然后单击
    Submit
    按钮,检查您得到的值。仍然不工作..在控制台中..api中显示log(req.body){status:我输入的值(1或0或-1)…但在我的数据库中没有更新这意味着至少你在身体中获得了
    状态
    。最好记录
    错误
    ,看看更新时是否有任何DB错误。如果你使用
    猫鼬
    ,最好使用
    。更新
    ,而不是你的方法。是的,我正在使用猫鼬,不知道在哪里错误是..!!提示:在更新我的答案和确认时,尝试猫鼬式的方法。
    Blog.update({_id: req.query.blog_id}, {status: req.body.status}, function(err, numAffected){
       ...
    });
    
    Blog.findOne({_id: req.query.blog_id}, function(err, blog){
        blog.status = req.body.status;
        blog.save();
    });