Как использовать метод js в файле TS? - PullRequest
1 голос
/ 05 апреля 2020

Я работаю над проектом, состоящим в разработке сайта с некоторыми API. Я хочу использовать js методы в машинописи, чтобы знать, когда пользователь нажимает на кнопку отправить (отправить комментарий), чтобы собрать информацию и показать ее в другом разделе.

Вот код js :

const express = require('express');

const mongoose = require('mongoose');
const Thing = require('./models/Thing');

mongoose.connect('mongodb+noemie_farizon://jimbob:Chouquette72@cluster0-pme76.mongodb.net/test?retryWrites=true&w=majority',
  { useNewUrlParser: true,
    useUnifiedTopology: true })
  .then(() => console.log('Connexion à MongoDB réussie !'))
  .catch(() => console.log('Connexion à MongoDB échouée !'));

const app = express();

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
  next();
});

// middlewear pour enregister un commentaire d'utilisateur
app.post('/api', (req, res, next) => {
  const thing =  new Thing({
     ...req.body
  });
  thing.save()
      .then(() => res.status(201).json({message: 'Objet enregistré !'}))// 201 = code création reussi
      .catch(error => res.status(400).json({ error }));// 400 = code erreur
  next();
});

// affichage des commentaires
app.use('/api', (req, res, next) => {
  // methode en allant chercher dans la bdd
  Thing.find()
      .then(avis => res.status(200).json(avis))
      .catch(error => res.status(400).json({ error }));
});

// pour faire les palmares des pilotes
app.use('/api', (req, res, next) => {
  Thing.find()
      .then(meilleur => res.status(200).json(meilleur))
      .catch(error => res.status(400).json({ error }));
  next();
});

module.exports = app;

и место, где я хочу использовать эти методы:

import { Component, OnInit } from '@angular/core';
import * as $ from 'jquery';
import { Button } from 'protractor';

@Component({
  selector: 'app-formulaire',
  templateUrl: './formulaire.component.html',
  styleUrls: ['./formulaire.component.css']
})
export class FormulaireComponent implements OnInit {

  constructor() { }

  ngOnInit(): void {
  }

  sendCommentary(){

  }

}

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Ваш вопрос вводит в заблуждение по нескольким причинам.

  1. Во-первых, существует явное заблуждение, что TypeScript и JavaScript - это две разные технологии. Они не. TypeScript заменяет JavaScript, добавляя несколько дополнительных элементов, таких как строгие типы. Вы всегда можете запустить vanilla JavaScript внутри файла TypeScript. Это одна и та же базовая технология.
  2. Во-вторых, цель, которую вы на самом деле пытаетесь достичь, не имеет особого смысла и, опять же, кажется немного запутанной. Вы пытаетесь вызвать методы кода на стороне сервера в компонентах кода на стороне клиента. Это не то, как работает взаимодействие сервера и клиента. Вам нужно будет предоставить API, а конечные точки будут отображать любые вызовы, которые вы хотите сделать между клиентом и сервером.

Я бы посоветовал вам немного изучить вопрос о том, как создавать ноды express. js API и Angular интеграция. Это может прояснить некоторые идеи.

0 голосов
/ 05 апреля 2020

Вам необходимо разделить «Клиент» и «Сервер». Expressjs (первый фрагмент кода) - это серверная часть, которая предоставляет API и (вероятно?) Размещает вашу Angular страницу (= клиент, второй фрагмент кода).

Таким образом, в основном нет прямой связи между этими двумя приложениями, кроме возможности общаться через http (s).

Вы можете взглянуть на Angular учебное пособие по реализации вызовов API: https://angular.io/guide/http

...