javascript - 发布并放入 Angular2

标签 javascript angular

我需要一些帮助。我正在构建一个图书馆应用程序。我需要从服务器获取书籍、标题和作者的列表,并能够更新和插入新书籍到服务器上的数据库中。 Get 方法工作正常,我得到了所有信息的列表,但由于此错误,pust 方法不起作用。

POST http://localhost:3002/app/components/bookdata/dbooks.json 404 (Not 
Found)



import {Injectable} from '@angular/core';
import {Http,Response} from '@angular/http';
import {Headers} from '@angular/http';
import 'rxjs/add/operator/map';
import {RequestOptions} from  '@angular/http';

@Injectable()
export class BookService  {
public _url:string="app/components/bookdata/dbooks.json";

constructor(private _http:Http){}
getBooks(){

    return this._http.get(this._url)
    .map((res:Response)=>res.json());
}

insertNewBook(book:Book){



            let body=JSON.stringify(book);
            let headers=new Headers({'Content-Type':'application/json'});
            let options=new RequestOptions({headers:headers});
            this._http.post(this._url,body).subscribe();


       //  .map((res:Response)=>res.json());


    }
        }




export interface Book{
id:number;
Author:string;
Date:string;
Title:string;
}

这就是我发送它的方式

 import{Component,OnInit} from '@angular/core';
 import {Book} from '../services/book.service'
 import {Injectable} from '@angular/core';
 import {Http,Response} from '@angular/http';
 import {BookService} from '../services/book.service';
 import 'rxjs/add/operator/map';

 @Component({
 selector:'newBook',
 template:`
            <div>

            <div>
                <label for="Author">Author:</label>
                <input type="text" id="au" #au>
        </div>

        <div>
        </div>
        <div>

        <label for="Date">Date:</label>
        <input type="text" id="da" #da>
</div>

<div>
<label for="Titl">Title:</label>
<input type="text" id="ti" #ti>
</div>
<button (click)="InsertData(au.value,da.value,ti.value)">Create</button>
</div>

`

 })
export class NewBookComponent  {
 book:Book;
static num:number;

constructor(private _bookService:BookService){
    NewBookComponent.num=10;
}

InsertData(au:string,da:string,ti:string){

   let book:Book={id:NewBookComponent.num++,Author:au,Date:da,Title:ti};


                 this._bookService.insertNewBook(this.book);
             //.subscribe(res=>console.log(res));


}

}

最佳答案

这对您不起作用的原因是因为您没有发布到 API,您正在写入显然只是静态文件的内容。当您仅通过 get 请求调用您的应用程序中的 url 时,它足够聪明,可以将 json 返回给您,但它不够聪明,无法用它做任何其他事情。

如果你想通过 POST 请求修改文件,你将不得不使用服务器端技术编写 API,将文件托管在该服务器上,并根据请求对其进行传统的文件操作.在节点中,这就是你的方式 modify a file ,这是一个如何构建 API 的示例在节点中。 (Node,如果你不熟悉,是一种javascript服务器端语言,如果你熟悉angular,可以马上上手)

关于javascript - 发布并放入 Angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45860230/

相关文章:

angular - Angular 形|当我使用2 ngIf时,如何读取子组件的属性?

javascript - 在外部 javascript 函数中调用 typescript 函数

typescript - 如何避免在 Angular 2 中导入相对路径很长的内容?

javascript - 为什么我的过滤器没有按预期工作?

javascript - 如何标记我的 html 范围 slider ?

javascript - 对包含数字的 JavaScript 字符串数组进行排序

javascript - 错误引用错误: React is not defined | Using React Components in Angular

javascript - 处理 Angular 2 应用程序中数组中某些对象缺少属性的问题

Javascript 执行问题

javascript - 在javascript中创建树状结构