2017-03-04 2 views
2

Ich fühle mich wie ich bin so nah daran, das funktioniert, aber mir fehlt der letzte Schritt. Es sieht so aus, als ob ich die Dokumentation genau befolge, aber kann mir jemand helfen zu verstehen, was ich vermisse. Hier ist mein @angular Service:FeathersJS mit Socket.io hören auf Ereignisse ist ruhig

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}); 
    } 
} 

dann hier ist mein Router Code (Unter Route:/Realtime)

const feathers = require('feathers'); 
const realtime = feathers(); 

const socketio = require('feathers-socketio'); 
realtime.configure(socketio({ wsEngine: 'uws' }, (io) => { 
    io.on('connection', (socket) => { 
    socket.emit('news', { text: 'A client connected!' }); 
    }); 

    // Registering Socket.io middleware 
    io.use((socket, next) => { 
     // Exposing a request property to services and hooks 
     socket.feathers.referrer = socket.request.referrer; 
     next(); 
    }); 
})); 

const UserService = require('../controllers/user_service'); 
realtime.use('/user_status', new UserService()); 

module.exports = realtime; 

und schließlich hier ist mein Service

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; 

Antwort

2

Sie sind nicht Zurückgeben des Versprechens in Ihrer Service-Methode

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; 

sollte es tun.

+0

danke !!! Ich habe das gerade herausgefunden, haha, habe den ganzen Vormittag damit verbracht, daran zu arbeiten. installiert einen Linter und schrieb einige Tests auch, so dass es keine Zeitverschwendung war. Aber das ist großartig, jetzt, wo es funktioniert – jaruesink

Verwandte Themen