【问题标题】:nothing happens when i submit a form in MEAN STACK [duplicate]当我在 MEAN STACK 中提交表单时没有任何反应[重复]
【发布时间】:2021-11-28 02:10:12
【问题描述】:

所以这个项目是如此简单。用户输入有关一本书的一些信息,然后单击提交以将信息保存在数据库(Mongodb)中,我正在使用 MEAN STACK 并且我是菜鸟(显然)。当我提交甚至没有错误时,什么也没有发生。

后端代码:

    //POST ONE BOOK
    booksRoute.route('/post').post((req,res,next)=>{
        var x = {
            name   : req.params.name,
            genre  : req.params.genre,   
            author : req.params.author,
            rating : req.params.rating,
            price  : req.params.price
        }
        console.log(x) ; 
        BookModel(x).save((err,data)=>{
            if (err){console.log(err);}
            else res.send(data) ;
}) ;
})

添加书籍组件html:

<ul>
    <form #f="ngForm" (ngSubmit)="onSubmit(f)">  
    <li>
    <label>book's name *</label>
    <input name="name" type="text" ngModel>
    </li>
    <li>
    <label>book's genre *</label>
    <input name="genre" type="text" ngModel>
    </li>
    <li>
    <label>book's author *</label>
    <input name="author" type="text" ngModel>
    </li>
    <li>
    <label>rating *</label>
    <input name="rating" type="number" [max]="10" min="0" ngModel>
    </li>
    <li>
    <label>price *</label>
    <input name="price" type="number" ngModel>
    <input class="btn btn-primary" type="submit"/> 
    </li>  
</form>
</ul>

角度服务

  postBook(data){
    console.log(data) ;
    return this.http.post(this.backendUrl+'/post',data) ;
  }

在 addBook 组件中

onSubmit(f){
    //console.log(f.value) ;
    this.apiService.postBook(f.value) ; 
  }

注意:我可以从数据库中获取数据,我可以通过它的名字找到一本书,但我不能发布

【问题讨论】:

    标签: node.js angular mongodb express mean-stack


    【解决方案1】:

    我猜您需要订阅您的 API/back 的响应,如下所示:

    onSubmit(f){
        //console.log(f.value) ;
        this.apiService.postBook(f.value)
        .subscribe( res => {
         console.log('The back response:', res);
        }); 
    }
    

    除非您不订阅对 API 进行 http 调用 的 observable,否则不会“启动”http 调用过程。

    【讨论】:

    • 你的建议是正确的,非常感谢你,但我无法理解我的意思的逻辑,我认为我们订阅一个 observable 以获得它的新值,只要它的值改变正确?但是在这里我们将数据发布到数据库,我们没有将其发送到首页或任何东西,我在这里是否有意义还是我完全错了。该死的这个角度令人困惑。
    • 我理解你的疑问,因为它一开始有点“混乱”,但它就是这样工作的:直到 observable 没有订阅 http 调用,它才会启动(因此, 'back' 不会收到任何信号,不会处理 put,也不会返回一切正常的响应,...)。我给你留下一篇关于它的文章,希望它可以帮助你更好地理解这个主题:tektutorialshub.com/angular/angular-httpclient
    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多