2016-07-06 13 views
-1

1.- Ich arbeite mit Loopback-Stecker-rethinkdbdashReturn Abfrage rethinkdbdash auf Loopback-Remote-Methode

2.- auf einer Remote-Methode, die ich brauche ein paar zufälligen Datensätze aus meiner DB abrufen, dann ist dies der Code so weit.

(function(){ 
 
    'use strict'; 
 
    module.exports = (Heatmap) => { 
 
     var r = require('rethinkdb'); 
 
     // Connect to RethinkDB 
 
     var p = r.connect({ 
 
      host: 'rethink', 
 
      port: 28015, 
 
      db: 'livedata' 
 
     }); 
 

 

 
     // Error Handler 
 
     function throwErr(err) { 
 
      throw (err); 
 
     } 
 
     
 
     // Random Remote Method 
 
     Heatmap.random = (cb) => { 
 
      p.then(function(conn) { 
 
       r.table('heatmap').run(conn, function(err, cursor) { 
 
         cursor.toArray(function(err, results) { 
 
          console.log('ALO-4', results) 
 
          cb(err, results); 
 
         }) 
 
       }) 
 
     \t  }).error(throwErr);    
 
     }; // Heatmap.random 
 

 
     Heatmap.remoteMethod(
 
      'random', 
 
      { 
 
       accepts : [], 
 
       returns : { arg : 'results', type : 'array', root : true }, 
 
       http : { path : '/random', verb : 'get' } 
 
      } 
 
     ); // Heatmap.remoteMethod 
 
    }; 
 
}).call(this);

3.- Ich habe folgte bereits diese Dokumentation: https://github.com/neumino/rethinkdbdash https://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Argumentdescriptions

4.- Die Sache ist die, dass die Datensätze oder die Ergebnisse auf der console.log zurückkehren (‘ ALO-4 'aber sie kehren nicht in den Browser zurück ...

Ich weiß nicht, was los ist, kann mir jemand helfen?

Ty

Antwort

0

Ihr Code ist ein bisschen weg, los geht:

(function() { 
 
'use strict'; 
 
module.exports = function (Heatmap) { 
 
    var r = require('rethinkdb'); 
 
    // Connect to RethinkDB 
 
    var p = r.connect({ 
 
     host: 'rethink', 
 
     port: 28015, 
 
     db: 'livedata' 
 
    }); 
 
    // Error Handler 
 
    function throwErr(err) { 
 
     throw (err); 
 
    } 
 
    // Random Remote Method 
 
    Heatmap.random = function (cb) { 
 
     var results = null; 
 
     p.then(function (conn) { 
 
      r.table('heatmap').sample(100).run(conn, function (err, cursor) { 
 
       cursor.toArray(function (err, arr) { 
 
        results = arr; 
 
        cb(err, results); 
 
       }); 
 
      }); 
 
     }).error(throwErr); 
 
    }; // Heatmap.random 
 
    Heatmap.remoteMethod('random', { 
 
     returns: { arg: 'results', type: 'array', root: true }, 
 
     http: { path: '/random', verb: 'get' } 
 
    }); // Heatmap.remoteMethod 
 
}; 
 
}).call(this);

Der Fehler passiert erwähnen, weil die Daten, die Sie zurückgeben muss den gleichen Namen haben als "arg" definieren Sie unten. Auf Ihrem Code "Ergebnisse" sind es nur Rohdaten, die keinen Namen haben. Loopback ist auf der Suche nach etwas wie:

Das ist eine Sache. Eine andere Sache ist, dass wenn Sie zufällige Ergebnisse wollen (wie man durch den Namen der Methode denken könnte), müssen Sie die Beispielfunktion bereitstellen, sonst geben Sie nur alle Ihre Daten in der konventionellen (absteigenden?) Reihenfolge und wenn die Anfrage es ist groß genug, dass Sie Probleme haben könnten.