Javascript 带有Socket.io侦听事件的FeatherJS处于静默状态

Javascript 带有Socket.io侦听事件的FeatherJS处于静默状态,javascript,node.js,socket.io,feathersjs,Javascript,Node.js,Socket.io,Feathersjs,我觉得我已经很快就能让它工作了,但是我错过了最后一步。看起来我在严格遵循文档,但是有人能帮我理解我遗漏了什么吗。这是我的@angular服务: declare var require: any const feathers = require('feathers/client'); const socketio = require('feathers-socketio/client'); const io = require('socket.io-client'); import { Inj

我觉得我已经很快就能让它工作了,但是我错过了最后一步。看起来我在严格遵循文档,但是有人能帮我理解我遗漏了什么吗。这是我的@angular服务:

declare var require: any

const feathers = require('feathers/client');
const socketio = require('feathers-socketio/client');
const io = require('socket.io-client');

import { Injectable } from '@angular/core';
import { UserService } from './user.service';

@Injectable()
export class FeathersService {

  socket = io.connect('http://localhost:3000/');
  app = feathers().configure(socketio(this.socket));
  status = this.app.service('realtime/user_status');

  constructor(
    public user: UserService,
  ) {
    this.status.on('updated', ({status}) => {
      console.log('your status was updated', status);
      this.user.me.status = status;
    });
  }

  updateStatus(status) {
    const id = this.user.me._id;
    this.status.update(id, {status});
  }
}
这是我的路由器代码(子路由:/realtime)

最后是我的服务

const User = require('../models/user');

class UserService {
  update(id, userProps, params, next) {
    const userID = id;

    User.findByIdAndUpdate({ _id: userID }, userProps, { 'new': true })
      .then(user => {
        console.log('userProps', userProps);
        console.log('user >>>', user);
        return Promise.resolve(user);
      })
      .catch(next);
  }
}

module.exports = UserService;

您没有在服务方法中返回承诺

const User = require('../models/user');

class UserService {
  update(id, userProps, params) {
    const userID = id;

    return User.findByIdAndUpdate({ _id: userID }, userProps, { 'new': true })
      .then(user => {
        console.log('userProps', userProps);
        console.log('user >>>', user);
        return user;
      });
  }
}

module.exports = UserService;

应该这样做。

谢谢!!!事实上,我刚刚发现了这一点,哈哈,整个上午都在努力。安装了一个过梁并编写了一些测试,这样就不会浪费时间。但这是可怕的,现在它的工作
const User = require('../models/user');

class UserService {
  update(id, userProps, params) {
    const userID = id;

    return User.findByIdAndUpdate({ _id: userID }, userProps, { 'new': true })
      .then(user => {
        console.log('userProps', userProps);
        console.log('user >>>', user);
        return user;
      });
  }
}

module.exports = UserService;