Angular:i' m获取“未定义的500内部服务器错误”
先感谢您。 有人可以帮助我了解如何解决此错误吗? 如果需要,我可以添加更多代码详细信息,但是控制台指向我的serviceController
:终端指向我的模型架构:
再次感谢您。
控制台错误
import { Component, OnInit} from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { Router } from '@angular/router';
// For Validation and Registration
import { BusinessCardServ, EventServ, JobServ } from '../models/services';
// For Backend API
import { BusinessCardService } from "../services/businesscards.service";
import { EventService } from "../services/events.service";
import { JobService } from "../services/jobs.service";
import { Subscription } from 'rxjs';
//const BusinessCard = require('models/BusinessCard');
@Component({
selector: 'administer',
templateUrl: './administer.component.html',
styleUrls: ['./administer.component.scss']
})
export class AdministerComponent implements OnInit {
listBusinesscards: BusinessCardServ [] = [];
_subscription!: Subscription;
businessCardForm: FormGroup;
_id: any | null;
constructor(
// this for the business card form
private modalService: NgbModal,
private bcfb: FormBuilder,
private _businessCardService: BusinessCardService,
private router: Router,
) {
//Form Validation
this.businessCardForm = this.bcfb.group({
name: ['', Validators.required],
title: ['', Validators.required],
email: ['', Validators.required],
phone: ['', Validators.required],
website: ['', ''],
bName: ['', Validators.required],
bServ: ['', Validators.required]
});
// Looks for the Html id="cancel"
// let ref = document.getElementById('close');
// ref?.click();
}
openServPopUp(ServPopUp: any) {
const modalRef = this.modalService.open(ServPopUp);
modalRef.componentInstance;
}
public isServsCollapsed = true;
// To add... CRUD
createBusinessCard() {
const BUSINESSCARD: BusinessCardServ = {
name: this.businessCardForm.get('name')?.value,
title: this.businessCardForm.get('title')?.value,
email: this.businessCardForm.get('email')?.value,
phone: this.businessCardForm.get('phone')?.value,
website: this.businessCardForm.get('website')?.value,
bName: this.businessCardForm.get('bName')?.value,
bServ: this.businessCardForm.get('bServ')?.value,
}
if(this._id !== null){
console.log("If: Updating Business Card");
this._businessCardService.updateBusinessCard(this._id, BUSINESSCARD).subscribe((data: any) ={
this.router.navigate(['/administer']);
}, error => {
console.log(error);
this.businessCardForm.reset();
})
} else {
console.log("Else: Creating Business Card");
this._businessCardService.createBusinessCard(BUSINESSCARD).subscribe((data: any) => {
this.router.navigate(['/administer']);
}, error => {
console.log(error);
this.businessCardForm.reset();
})
}
}
ngOnInit(): void {
// Business Card
this.getBusinessCards();
this._subscription = this._businessCardService.refresh$.subscribe(() => {
this.getBusinessCards();
});
}
ngOnDestroy(): void{
this._subscription.unsubscribe();
console.log("Observable Closed.");
}
getBusinessCards() {
this._businessCardService.getBusinessCards().subscribe((data: any) => {
console.log(data);
// getting the data from the database
this.listBusinesscards = data;
}, (error: any) => {
console.log(error);
})
}
// To Automatically Fill the business card form with the data
onEditBusinesscard(businesscard: any) {
this._businessCardService.getBusinessCard(businesscard._id).subscribe((data: any) => {
this.businessCardForm.controls['name'].setValue(businesscard.name);
this.businessCardForm.controls['title'].setValue(businesscard.title);
this.businessCardForm.controls['email'].setValue(businesscard.email);
this.businessCardForm.controls['phone'].setValue(businesscard.phone);
this.businessCardForm.controls['website'].setValue(businesscard.website);
this.businessCardForm.controls['bName'].setValue(businesscard.bName);
this.businessCardForm.controls['bServ'].setValue(businesscard.bServ);
})
}
我的serviceController:
// Update request ------------------------------------
exports.updateBusinessCard = async(req, res) => {
try {
const { name, title, email, phone, website, bName, bServ } = req.body;
let businessCard = await BusinessCard.findById(req.params._id);
if (!businessCard) {
res.status(404).json({ msg: 'Business card not found' });
}
businessCard.name = name;
businessCard.title = title;
businessCard.email = email;
businessCard.phone = phone;
businessCard.website = website;
businessCard.bName = bName;
businessCard.bServ = bServ;
// findByOneAndUpdate
// findByIdAndUpdate
businessCard = await BusinessCard.findByOneAndUpdate({ _id: req.params._id }, businessCard, { new: true })
res.json(businessCard);
} catch (error) {
console.log(error);
res.status(500).send('Server error: Update business card!');
}
}
我的模型架构:
const mongoose = require('mongoose');
const BusinessCardSchema = mongoose.Schema({
name: {
type: String,
required: true
},
title: {
type: String,
required: true
},
email: {
type: String,
required: true
},
phone: {
type: String,
required: true
},
website: {
type: String,
required: false
},
bName: {
type: String,
required: true
},
bServ: {
type: String,
required: true
}
});
module.exports = mongoose.model('BusinessCard', BusinessCardSchema);
Thank you in advance.
Can someone please help me understand how I can go about fixing this error?
I can add more code detail if need be, but the Console is pointing to my ServiceController
: and the Terminal is pointing to my Model Schema:
Once again thank you.
Console error
import { Component, OnInit} from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { Router } from '@angular/router';
// For Validation and Registration
import { BusinessCardServ, EventServ, JobServ } from '../models/services';
// For Backend API
import { BusinessCardService } from "../services/businesscards.service";
import { EventService } from "../services/events.service";
import { JobService } from "../services/jobs.service";
import { Subscription } from 'rxjs';
//const BusinessCard = require('models/BusinessCard');
@Component({
selector: 'administer',
templateUrl: './administer.component.html',
styleUrls: ['./administer.component.scss']
})
export class AdministerComponent implements OnInit {
listBusinesscards: BusinessCardServ [] = [];
_subscription!: Subscription;
businessCardForm: FormGroup;
_id: any | null;
constructor(
// this for the business card form
private modalService: NgbModal,
private bcfb: FormBuilder,
private _businessCardService: BusinessCardService,
private router: Router,
) {
//Form Validation
this.businessCardForm = this.bcfb.group({
name: ['', Validators.required],
title: ['', Validators.required],
email: ['', Validators.required],
phone: ['', Validators.required],
website: ['', ''],
bName: ['', Validators.required],
bServ: ['', Validators.required]
});
// Looks for the Html id="cancel"
// let ref = document.getElementById('close');
// ref?.click();
}
openServPopUp(ServPopUp: any) {
const modalRef = this.modalService.open(ServPopUp);
modalRef.componentInstance;
}
public isServsCollapsed = true;
// To add... CRUD
createBusinessCard() {
const BUSINESSCARD: BusinessCardServ = {
name: this.businessCardForm.get('name')?.value,
title: this.businessCardForm.get('title')?.value,
email: this.businessCardForm.get('email')?.value,
phone: this.businessCardForm.get('phone')?.value,
website: this.businessCardForm.get('website')?.value,
bName: this.businessCardForm.get('bName')?.value,
bServ: this.businessCardForm.get('bServ')?.value,
}
if(this._id !== null){
console.log("If: Updating Business Card");
this._businessCardService.updateBusinessCard(this._id, BUSINESSCARD).subscribe((data: any) ={
this.router.navigate(['/administer']);
}, error => {
console.log(error);
this.businessCardForm.reset();
})
} else {
console.log("Else: Creating Business Card");
this._businessCardService.createBusinessCard(BUSINESSCARD).subscribe((data: any) => {
this.router.navigate(['/administer']);
}, error => {
console.log(error);
this.businessCardForm.reset();
})
}
}
ngOnInit(): void {
// Business Card
this.getBusinessCards();
this._subscription = this._businessCardService.refresh$.subscribe(() => {
this.getBusinessCards();
});
}
ngOnDestroy(): void{
this._subscription.unsubscribe();
console.log("Observable Closed.");
}
getBusinessCards() {
this._businessCardService.getBusinessCards().subscribe((data: any) => {
console.log(data);
// getting the data from the database
this.listBusinesscards = data;
}, (error: any) => {
console.log(error);
})
}
// To Automatically Fill the business card form with the data
onEditBusinesscard(businesscard: any) {
this._businessCardService.getBusinessCard(businesscard._id).subscribe((data: any) => {
this.businessCardForm.controls['name'].setValue(businesscard.name);
this.businessCardForm.controls['title'].setValue(businesscard.title);
this.businessCardForm.controls['email'].setValue(businesscard.email);
this.businessCardForm.controls['phone'].setValue(businesscard.phone);
this.businessCardForm.controls['website'].setValue(businesscard.website);
this.businessCardForm.controls['bName'].setValue(businesscard.bName);
this.businessCardForm.controls['bServ'].setValue(businesscard.bServ);
})
}
My ServiceController:
// Update request ------------------------------------
exports.updateBusinessCard = async(req, res) => {
try {
const { name, title, email, phone, website, bName, bServ } = req.body;
let businessCard = await BusinessCard.findById(req.params._id);
if (!businessCard) {
res.status(404).json({ msg: 'Business card not found' });
}
businessCard.name = name;
businessCard.title = title;
businessCard.email = email;
businessCard.phone = phone;
businessCard.website = website;
businessCard.bName = bName;
businessCard.bServ = bServ;
// findByOneAndUpdate
// findByIdAndUpdate
businessCard = await BusinessCard.findByOneAndUpdate({ _id: req.params._id }, businessCard, { new: true })
res.json(businessCard);
} catch (error) {
console.log(error);
res.status(500).send('Server error: Update business card!');
}
}
My Model Schema:
const mongoose = require('mongoose');
const BusinessCardSchema = mongoose.Schema({
name: {
type: String,
required: true
},
title: {
type: String,
required: true
},
email: {
type: String,
required: true
},
phone: {
type: String,
required: true
},
website: {
type: String,
required: false
},
bName: {
type: String,
required: true
},
bServ: {
type: String,
required: true
}
});
module.exports = mongoose.model('BusinessCard', BusinessCardSchema);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该从BusinessCard中删除_id。 İf不要,给出重复的错误。喜欢 :
You should remove _id from businessCard. İf dont, gives duplicate error. Like :