我有一个使用node的API(Localhost:3000)和一个使用Angular 6的前端(Localhost:4200)。使用常规的chrome浏览器,我可以在API中使用CRUD到数据库,但是当我使用android模拟器使用(10.0.2.2:4200),我再也无法对数据库执行任何CRUD了。请在下面查看我的代码:
节点[index.js]
on message 10msMessage
{
if (20msTask_Free)
{
20msTask_Free=0;
20msTask();
}
}
角形前端 这是在data.service中
const express = require("express");
const nedb = require("nedb");
const rest = require("express-nedb-rest");
const cors = require("cors");
const app = express();
const datastore = new nedb({
filename: "mycoffeeapp.db",
autoload: true
});
const restAPI = rest();
restAPI.addDatastore('coffees', datastore);
app.use(cors());
app.use('/', restAPI);
app.listen(3000);
在组件中:
import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
@Injectable({
providedIn: "root"
})
export class DataService {
public endpoint = "http://localhost:3000";
constructor(
private http: HttpClient
) {}
getList(callback) {
this.http.get(`${this.endpoint}/coffees`)
.subscribe(response => {
callback(response);
});
}
get(coffeeId: string, callback) {
this.http.get(`${this.endpoint}/coffees/${coffeeId}`)
.subscribe(response => {
callback(response);
});
}
save(coffee, callback) {
if (coffee._id) {
this.http.put(`${this.endpoint}/coffees/${coffee._id}`, coffee)
.subscribe(response => {
callback(true);
});
} else {
this.http.post(`${this.endpoint}/coffees`, coffee)
.subscribe(response => {
callback(true);
});
}
}
}
答案 0 :(得分:1)
如果您运行模拟的android设备并尝试访问10.0.2.2:4200
上的开发环境,那么只要该仿真器在同一网络上,您就可以访问angular应用。
现在,您需要确保可以从本地计算机外部访问您的API,并在角度范围内使用IP地址设置API网址
export class DataService {
public endpoint = "http://10.0.2.2:3000";
如果您使用localhost
,这将指向仿真设备本身,而该设备没有您的API runnnig