在Angular、MongoDB和Express框架中显示多个模型模式,通常涉及到前后端的协同工作。以下是一个基本的流程和示例代码,帮助你理解如何在ngOnInit()
生命周期钩子中获取并显示多个模型模式的数据。
假设我们有两个模型:User
和Product
,我们希望在Angular组件初始化时从服务器获取这两个模型的数据并显示。
首先,设置Express服务器以提供API端点来获取User
和Product
数据。
// server.js
const express = require('express');
const mongoose = require('mongoose');
const app = express();
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
const UserSchema = new mongoose.Schema({ name: String, email: String });
const ProductSchema = new mongoose.Schema({ name: String, price: Number });
const User = mongoose.model('User', UserSchema);
const Product = mongoose.model('Product', ProductSchema);
app.get('/api/users', async (req, res) => {
const users = await User.find();
res.json(users);
});
app.get('/api/products', async (req, res) => {
const products = await Product.find();
res.json(products);
});
app.listen(3000, () => console.log('Server running on port 3000'));
在Angular中,创建一个组件来处理数据的获取和显示。
// app.component.ts
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-root',
template: `
<div>
<h2>Users</h2>
<ul>
<li *ngFor="let user of users">{{ user.name }} - {{ user.email }}</li>
</ul>
<h2>Products</h2>
<ul>
<li *ngFor="let product of products">{{ product.name }} - ${{ product.price }}</li>
</ul>
</div>
`
})
export class AppComponent implements OnInit {
users: any[] = [];
products: any[] = [];
constructor(private http: HttpClient) {}
ngOnInit() {
this.http.get('/api/users').subscribe((users: any[]) => {
this.users = users;
});
this.http.get('/api/products').subscribe((products: any[]) => {
this.products = products;
});
}
}
const cors = require('cors');
app.use(cors());
async
管道或RxJS操作符来优化用户体验。catchError
操作符来捕获和处理HTTP请求失败的情况。通过上述步骤,你可以在Angular组件的ngOnInit()
方法中成功获取并显示来自MongoDB并通过Express提供的多个模型模式的数据。