后端未收到请求

发布于 2025-01-22 22:13:09 字数 2720 浏览 2 评论 0原文

我的项目将Angular用作前端和Node.js作为socket.io Integration的后端。

我正在尝试从Frontend发送帖子请求,如下所示:

Frontend

HTML中的按钮调用onorder()方法:

 <button (click)="onOrder()" class="button">Checkout</button></div>

中的方法调用。

onOrder(){
    console.log('pressed'); // successfully logged to console
    if(this.itemsInCart.length > 0 ) {
      let order: SubmitOrderModel = new SubmitOrderModel();
      order.order = this.itemsInCart;
      this.webSocketService.fetchOrders(order);
    }
  }

export class AddToCartModel {
    thumbnail?: string = '';
    mealName: string = '';
    addons: string[] = [];
    variant?: string = '';
    cost: number = 0;
    quantity: number = 1;
}

export class SubmitOrderModel {
    order: AddToCartModel[] = [];
}

setupSocketConnection(){
        this.socket.on('fetchOrders', (data: string) => {
            console.log(data);
            localStorage.setItem('allOrders', JSON.stringify(data[0]));
          });
        this.socket.on('fetchRequests', (data: string) => {
            console.log(data);
            localStorage.setItem('allRequests', JSON.stringify(data[0]));
            StaffScreenComponent.allRequests = data;
          });

    
    }

    fetchOrders(order: SubmitOrderModel) {
        this.socket.emit('fetchOrders', order);
    } 

    OnFetchOrders() {
        return this.socket.fromEvent('fetchOrders');
    }

​:

var mongoose = require('mongoose');

var menuOrderSchema = mongoose.Schema;

var AddMenuOrderSchema = new menuOrderSchema({
    order: [{
        thumbnail: String,
        mealName: String,
        addons: [String],
        variant: {type: String, default: 'Standard'},
        cost: Number,
        quantity: Number
    }],
});

var newMenuOrderSchema = mongoose.model('addMenuOrderSchema', AddMenuOrderSchema );

module.exports = newMenuOrderSchema;

并且后端中的套接字配置如下:

io.on('connection', (socket)=>{
    console.log('connection')
      socket.on("fetchOrders", (arg) => {
        console.log('fetchOrders');
        const postMenuOrderM = new addMenuOrderModel(arg);
        console.log('checking')
        postMenuOrderM.save().then(function(){
          addMenuOrderModel.find().then(data=>{
                io.emit('fetchOrders', data)
            }).catch(err=>res.send(err));
          });
      });

    socket.on('disconnect', () => console.log('disconnected')); 
})

Node.js服务器未从UI接收任何呼叫。

我在这里做错了什么?

My project uses Angular as the frontend and Node.js as the backend with socket.io integration.

I am trying to send a post request from frontend to backend as follows:

Frontend

The button in the HTML to call the onOrder() method:

 <button (click)="onOrder()" class="button">Checkout</button></div>

The method call in .ts file:

onOrder(){
    console.log('pressed'); // successfully logged to console
    if(this.itemsInCart.length > 0 ) {
      let order: SubmitOrderModel = new SubmitOrderModel();
      order.order = this.itemsInCart;
      this.webSocketService.fetchOrders(order);
    }
  }

The SubmitOrderModel below:

export class AddToCartModel {
    thumbnail?: string = '';
    mealName: string = '';
    addons: string[] = [];
    variant?: string = '';
    cost: number = 0;
    quantity: number = 1;
}

export class SubmitOrderModel {
    order: AddToCartModel[] = [];
}

The webSocketService methods below:

setupSocketConnection(){
        this.socket.on('fetchOrders', (data: string) => {
            console.log(data);
            localStorage.setItem('allOrders', JSON.stringify(data[0]));
          });
        this.socket.on('fetchRequests', (data: string) => {
            console.log(data);
            localStorage.setItem('allRequests', JSON.stringify(data[0]));
            StaffScreenComponent.allRequests = data;
          });

    
    }

    fetchOrders(order: SubmitOrderModel) {
        this.socket.emit('fetchOrders', order);
    } 

    OnFetchOrders() {
        return this.socket.fromEvent('fetchOrders');
    }

Backend

and in the backend, the schema definition is as follows:

var mongoose = require('mongoose');

var menuOrderSchema = mongoose.Schema;

var AddMenuOrderSchema = new menuOrderSchema({
    order: [{
        thumbnail: String,
        mealName: String,
        addons: [String],
        variant: {type: String, default: 'Standard'},
        cost: Number,
        quantity: Number
    }],
});

var newMenuOrderSchema = mongoose.model('addMenuOrderSchema', AddMenuOrderSchema );

module.exports = newMenuOrderSchema;

And the socket configuration in the backend is below:

io.on('connection', (socket)=>{
    console.log('connection')
      socket.on("fetchOrders", (arg) => {
        console.log('fetchOrders');
        const postMenuOrderM = new addMenuOrderModel(arg);
        console.log('checking')
        postMenuOrderM.save().then(function(){
          addMenuOrderModel.find().then(data=>{
                io.emit('fetchOrders', data)
            }).catch(err=>res.send(err));
          });
      });

    socket.on('disconnect', () => console.log('disconnected')); 
})

The Node.js server is not receiving any calls from the UI.

What am I doing wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文