1

私は、Node.jsでApp Engineの柔軟な環境を使用していて、Cloud Datastoreのエンティティを格納および取得しようとしています。クラウドデータストアとNode.js:エンティティを取得できません

次のコードが正常に新しいEventエンティティを作成します。

/* Create event */ 
router.post('/', function(req, res, next) {  
    const eventKey = datastore.key('Event'); 
    datastore.save({ 
    key: eventKey, 
    data: req.body 
    }) 
    .then(() => { 
    console.log('New event created'); 
    res.json({id: eventKey.id}); 
    }) 
    .catch((err) => { next(err); }); 
}); 

私は以前idを返さ提供する場合ただし、次のように空の配列を返します。

/* Get an event */ 
router.get('/:id', function(req, res, next) { 
    console.log(req.params.id); 
    var eventKey = datastore.key(['Event', req.params.id]); 
    datastore.get(eventKey) 
    .then((event) => { 
    console.log(event); 
    res.json(event); 
    }) 
    .catch((err) => { console.log(err); next(err); }); 
}); 

私はdatastore.getを使用しているように見えます正確にそしてwhat the docs is telling me to doを行うために。

以前に作成したエンティティを取得できない理由は何ですか?

答えて

1

Cloud Datastoreのキー([Ancestorパス+] kind + id/name)は、整数(ID)と文字列(名前)を別々に扱うことに注意してください。それは、次の2つのキーが異なるエンティティを参照するということである。

  • キー(イベント、1234)
  • キー(イベント、 "1234")

私は、ノードの専門家ではありませんよしかし、それはこれらの異なるキーを書いたり読んだりすることは可能でしょうか?

/* Get an event */ 
router.get('/:id', function(req, res, next) { 
    console.log(req.params.id); 
    var eventId = parseInt(req.params.id, 10) 
    var eventKey = datastore.key(['Event', eventId]); 
    datastore.get(eventKey) 
    .then((event) => { 
    console.log(event); 
    res.json(event); 
    }) 
    .catch((err) => { console.log(err); next(err); }); 
}); 
+0

それがあったことを:: 'VARのeventKey = datastore.key([ 'イベント' のparseInt(req.params.id、:私は整数を渡したことを確認、それを解決すること

のparseIntは、この問題を解決することができます10)])); ' – Steren

関連する問題