كتابة Express JS API مع خطأ تطبيق node.JS

0

أحاول إنشاء REST API في Express.js ولكن لدي بعض المشكلات ، وآمل أن يساعدني أحدهم )

كود Express.js الخاص بي:

  router.get( '/apps/download/:downloadId', function ( req, res, next ) {
    const opts = Object.assign( {downloadId: req.params.downloadId}, req.query );
      gplay.download( opts )
      .then( res.json(res) )
      .catch( next );
  });

رمز jQuery لتطبيق Node.js هو:

const data = $( '.row' ).eq( 6 ).find( 'table tr' ).map( function() {
    const a = $( this ).find( 'td:first-child a' );
    const td = $( this ).find( 'td:last-child' );

    return {
        version: a.text(),
        href: a.attr( 'href' ),
        date: td.text()
    }
}).get();

console.log( data )

const sdata = $( '.row' ).eq( 7 ).find( 'table tr' ).map( function() {
    const a = $( this ).find( 'td:first-child a' );
    const td = $( this ).find( 'td:last-child' );

    return {
        version: a.text(),
        href: a.attr( 'href' ),
        date: td.text()
    }
}).get();

console.log( sdata )

لذا عندما أفتح '/apps/download/:downloadId' في المتصفح ، تعطيني وحدة التحكم فقط.

[
]

[
    {
         version: '1.0.2',
         href: '/download-app/com.playgendary.kickthebuddy/5_com.playgendary.kickthebuddy_2018-06-09.apk/',
         date: 'June 9, 2018'
    },

    {
         version: '1.0.1',
         href: '/download-app/com.playgendary.kickthebuddy/4_com.playgendary.kickthebuddy_2018-05-28.apk/',
         date: 'May 28, 2018'
    },

    {
         version: 'Varies with device',
         href: '/download-app/com.playgendary.kickthebuddy/5_com.playgendary.kickthebuddy_2018-05-22.apk/',
         date: 'May 22, 2018'
    }
]

ومع ذلك ، في متصفح علامة التبويب يظهر لي هذا الخطأ: "message": "Converting circular structure to JSON" ، ولكن إذا تغيرت .then(res.json(res)) إلى .then(res.json.bind(res)) لا تعطيني شيئًا ، مجرد صفحة واضحة.

لذا أحتاج إلى الحصول على كل هذه البيانات في REST API على الصفحة في JSON ، فماذا أفعل؟

1 إجابة

1
افضل جواب

انت تتصل res.json مع ال res مرت في رد الاتصال ، وليس نتيجة الوعد.

router.get('/apps/download/:downloadId', function (req, res, next) {
    const opts = Object.assign({downloadId: req.params.downloadId}, req.query);
      gplay.download(opts)
      .then(downloadResult => res.json(downloadResult))
      .catch(next);
  });

أو

router.get('/apps/download/:downloadId', function (req, res, next) {
    const opts = Object.assign({downloadId: req.params.downloadId}, req.query);
      gplay.download(opts)
      .then(res.json)
      .catch(next);
  });
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام