Javascript angular2 http.post()到本地json文件

Javascript angular2 http.post()到本地json文件,javascript,json,angular,post,typescript,Javascript,Json,Angular,Post,Typescript,帮个小忙 我正在尝试将纯JSON写入项目中的文件,我的项目树如下所示: src ->app -->components --->people.component.ts --->(other irrelevant components) -->services --->people.service.ts -->data --->JSON.json ->(other irrelevant src files) mypeople.componen

帮个小忙

我正在尝试将纯JSON写入项目中的文件,我的项目树如下所示:

src
->app
-->components
--->people.component.ts
--->(other irrelevant components)
-->services
--->people.service.ts
-->data
--->JSON.json
->(other irrelevant src files)
my
people.component.ts
中的代码只用于调用和订阅my
people.service.ts
中的函数,并传递
newPerson
属性,该属性是使用angular2 magic从DOM绑定的数据;这是
name.service.ts
中的函数:

public addPerson(newPerson) {
        let headers = new Headers();
        headers.append('Content-Type', 'application/json');
        return this.http.post('app/data/PEOPLE.json', newPerson, { header: headers })
        .map(res => res.json())
}
我的目标是在
PEOPLE.json
中编写(如有必要,替换)newPerson属性(或整个文件)。当然,当前的
addPerson()
函数返回一个错误

我也尝试过
put
方法,它的错误略有不同,但我没有找到这两种方法的解决方案


我清楚地知道,我试图放入
PEOPLE.json
文件的数据格式/类型没有错误。

您无法从浏览器写入文件。时期即使这样的操作是可能的,它也将存储在用户端,而不是您的服务器上。如果您的任务确实是在用户端编写一些东西,请参考(或结合其他API实现)。但是,如果您打算在浏览器之外出于某种目的使用该文件,这将是一项非常重要的任务


若要将文件保存到服务器上,则需要在后端处理它。

不幸的是,您不能使用客户端(浏览器)JavaScript将文件直接放入或发布到本地文件系统上

考虑构建一个简单的服务器来处理POST请求。如果您最熟悉JavaScript,请尝试使用Node.js进行Express

// server.js
'use strict'

const bodyParser = require('body-parser');
const express = require('express');
const fs = require('fs');

const app = express()
app.use(bodyParser.json());

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', 'http://localhost:8000');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'POST');
  next();
});

app.post('/', (req, res) => {
  console.log('Received request');
  fs.writeFile('json.json', JSON.stringify(req.body), (err) => {
    if (err) throw err;
    console.log('File written to JSON.json');
    res.send('File written to JSON.json')
  })
});

app.listen(3000, ()=>{
  console.log('Listening on port 3000. Post a file to http://localhost:3000 to save to /JSON.json');
});

你需要一个服务器端组件来处理写操作。那么这种功能在android平台上是如何工作的呢假设我正在使用Nativescript angular进行此操作?还有一种持久化本地存储的方法吗?如果是这样的话,这就是解决方案,嗯,你在问题中从来没有提到过,你使用的是android平台。不幸的是,我没有这方面的经验:(可能有自己的方法来处理这个问题……但是,我仍然希望它应该有存储API。据我所知,LocalStorage用于:a)在同一web应用程序的两个实例之间共享数据(即在两个选项卡中打开网站);b) 离线应用程序(和浏览器扩展)c)黑客(我用它在没有管理员权限安装/启动应用程序的机器上从web自动下载文件)