#angular #mongodb #typescript #parsing #routes
#угловатый #mongodb — монгодб #машинописный текст #разбор #маршруты #angular #mongodb #синтаксический анализ
Вопрос:
В настоящее время я новичок, работающий над своим самым первым веб-приложением, и я пытаюсь использовать методы CRUD для своего компонента продукта. Я могу выполнять все четыре функции в NodeJS, которые я использовал в бэкэнде для создания Restful API. Но я не могу передать маршрут в моем файле TypeScript. Я пробовал это, собирая много ссылок, но я получаю сообщение об ошибке Cast to ObjectId failed for value "undefined" at path "_id" for model "Product"
.
Вот код, который я использовал в своем файле TypeScript для my-products.component.ts
:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { RestApiService } from '../rest-api.service';
import { DataService } from '../data.service' ;
@Component({
selector: 'app-my-products',
templateUrl: './my-products.component.html',
styleUrls: ['./my-products.component.scss']
})
export class MyProductsComponent implements OnInit {
productId: any;
products: any;
btnDisabled = false;
constructor(private data: DataService, private rest: RestApiService, private activatedRoute: ActivatedRoute) { }
async ngOnInit() {
async remove() {
const data = await this.rest.delete(
`http://localhost:397/api/seller/products/${this.productId}`
);
data['success']
? (this.products = data['products'])
: this.data.error(data['message']);
} catch (error) {
this.data.error(error['message']);
}
async update() {
this.btnDisabled = true;
try {
// if (this.validate(this.products)) {
const form = new FormData();
for (const key in this.products) {
if (this.products.hasOwnProperty(key)) {
if (key === 'images') {
form.append(
'images',
this.products.images,
this.products.images.name
);
} else {
form.append(key, this.products[key]);
}
}
}
const data = await this.rest.put(
'http://localhost:397/api/seller/products/${this.productId}',
form
);
data['success']
? this.data.success(data['message'])
: this.data.error(data['message']);
// }
} catch (error) {
this.data.error(error['message']);
}
this.btnDisabled =false;
}
}
Я публикую с надеждой получить решение здесь. Спасибо вам, ребята, за то, что вы такие классные.
Комментарии:
1. В какой строке ошибка?
2. ошибка была в маршруте, поэтому я не смог проанализировать значение идентификатора для удаления и функцию удаления. Но это было решено. Спасибо за ваш ответ.
Ответ №1:
Это была незначительная ошибка. Я, наконец, решил проблему.Если у кого-то возникли трудности с анализом значений в typescript, вот что я сделал, чтобы передать значение id для функции удаления:
async remove(id: any) {
const data = await this.rest.delete(
`http://localhost:397/api/seller/products/${id}`
);
if (data['success']){
this.data.success(data['message'])
}
else {
this.data.error(data['message'])
}
} catch (error) {
this.data.error(error['message']);
С помощью этого метода он автоматически получит значение ObjectId и следует заданному маршруту. Я сделал то же самое и для обновления.