Rethinkdb query always returns null 即使数据存在?

Rethinkdb query always returns null Eventhough data is existed?

我是 rethinkDB 的新手,我正在尝试使用过滤器功能按用户名查找数据。 但是 rethinkDB returns null eventthough data existed.

    //Define Your Api//Define Your Api
import express from 'express';
import r from 'rethinkdb';



const router = express.Router();


router.post('/users',(req,res)=>{

    let username = req.body.data.username;
    let password = req.body.data.password;
    console.log(username,password);

    r.connect({db:"image"}).then((conn) => {
        r.table("users").filter({username:"arfo"}).run(conn,function (err, data) {
            console.log(data) //null
        })
    })


});


export default router

已更新

它returns我有一堆这样的数据我必须要处理这些数据吗

Cursor {
  _type: 3,
  _eachCb: [Function],
  _conn:
   TcpConnection {
     host: 'localhost',
     port: 28015,
     db: 'image',
     authKey: '',
     timeout: 20,
     ssl: false,
     outstandingCallbacks: {},
     nextToken: 2,
     open: true,
     closing: false,
     buffer: <Buffer >,
     _events: {},
     _eventsCount: NaN,
     _closePromise: null,
     rawSocket:
      Socket {
        connecting: false,
        _hadError: false,
        _handle: [Object],
        _parent: null,
        _host: 'localhost',
        _readableState: [Object],
        readable: true,
        domain: null,
        _events: [Object],
        _eventsCount: 7,
        _maxListeners: undefined,
        _writableState: [Object],
        writable: true,
        allowHalfOpen: false,
        destroyed: false,
        _bytesDispatched: 325,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: null,
        _server: null,
        user: 'admin',
        password: '',
        read: [Function],
        _consuming: true } },
  _token: 1,
  _opts: {},
  _root: { [Function] args: [ [Object], [Object] ], optargs: {} },
  _responses: [ { t: 2, r: [Object], n: [] } ],
  _responseIndex: 0,
  _outstandingRequests: 0,
  _iterations: 0,
  _endFlag: true,
  _contFlag: false,
  _closeAsap: false,
  _cont: null,
  _cbQueue: [],
  _closeCb: null,
  _closeCbPromise: null,
  next: [Function] }

RethinkDB docs来看,好像是runreturns(err, data)。例如(来自文档):

r.table('marvel').run(conn, function(err, cursor) {
    cursor.each(console.log);
})

因此,如果您将代码更新为:

r.table("users").filter({username:"arfo"}).run(conn,function (err, data) {
    console.log(data)
})

然后它应该删除您看到的 null 日志。

我不是 RethinkDB 专家,但从文档来看,如果您想从响应中获取数据,那么您可以在光标上调用 toArray

r.table("test").run( conn, function(error, cursor) {
    cursor.toArray( function(error, results) {
        console.log(results) // results is an array of documents
    })
})