I can't get data from Datastore in App Engine but can add and delete

96 views
Skip to first unread message

Cesar SC

unread,
Jan 16, 2018, 9:41:26 AM1/16/18
to Google App Engine
Does someone know what's wrong with this code?
Thanks

const express = require('express');
const bodyParser = require('body-parser');
const engine = require('ejs-mate');
const Datastore = require('@google-cloud/datastore');

var app = express();

app.set('trust proxy', true);
app.use(express.static(__dirname + '/public'));
app.engine('ejs', engine);
app.set('view engine', 'ejs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

const datastore = Datastore();

app.get('/', (req, res)=>{
res.render('home');
});

app.get('/adduser', (req, res)=>{
res.render('adduser');
});
//WORKS
app.post('/adduserpost', (req, res) => {

const user = {
timestamp: new Date,
name: req.body.name_field,
girl: req.body.girl_field,
car: req.body.car_field
}

datastore.save({
key: datastore.key('usersTable'),
data: user
}).then(() => {
res.redirect('/');
}).catch((err) => {
res.redirect('/');
});

});

app.get('/getuser', (req, res) => {
res.render('getuser');
});
//DOESN'T WORK
app.post('/getuserpost', (req, res) => {
const query = datastore.createQuery('usersTable').filter('girl', req.body.girl_field).order('timestamp', { descending: true }).limit(10);
datastore.runQuery(query).then((results) => {
const entities = results[0];
res.json(entities[0]);
});
});
//WORKS
app.get('/getuserget', (req, res) => {
const query = datastore.createQuery('usersTable').order('timestamp', { descending: true }).limit(10);
datastore.runQuery(query).then((results) => {
const entities = results[0];
res.json(entities[0]);
});
});

app.get('/deleteuser', (req, res) => {
res.render('deleteuser');
});
//WORKS
app.post('/deleteuserpost', (req, res) => {
const query = datastore.createQuery('usersTable').filter('car', req.body.car_field);
datastore.runQuery(query).then((results) => {
const entities = results[0];
datastore.delete(entities[0][datastore.KEY], (err) => {
if (!err) {
res.redirect('/');
}
});
});
});

const PORT = process.env.PORT || 8080;
app.listen(PORT, (err) => {
if(err){
console.log(err);
}else{
console.log("Running...");
}
});
Message has been deleted

Cesar SC

unread,
Jan 16, 2018, 12:04:46 PM1/16/18
to Google App Engine


This doesn't work neither

//DOESN'T WORK
app.post('/getuserpost', (req, res) => {
const query = datastore.createQuery('usersTable').filter('girl', req.body.girl_field).order('timestamp', { descending: true }).limit(10);
datastore.runQuery(query).then((results) => {
const entities = results[0];
datastore.get(entities[0][datastore.KEY], (err, entity)=>{
if(!err){
res.json(entity);
}
});
});
});

Cesar SC

unread,
Jan 16, 2018, 1:03:35 PM1/16/18
to Google App Engine


Tags for Node JS would be great for this group. I have forgotten to write Node JS in the title

Jordan (Cloud Platform Support)

unread,
Jan 16, 2018, 2:24:20 PM1/16/18
to Google App Engine
If you are not seeing any results for your specific query this is usually an indication that you are missing an index (or the index has yet to be populated, which takes time if it is new). 

Ensure that you have correctly configured an index for your specific query in your index.yaml file. Also use the Cloud Console to check on the status of the index to ensure it is serving and populated with entities. 

- Note that Google Groups is reserved for general product discussions and not for technical support. If you require further technical support for performing Datastore queries, it is recommended to post your detailed questions to Stack Overflow using the supported Cloud tags.  

Cesar SC

unread,
Jan 16, 2018, 3:18:13 PM1/16/18
to Google App Engine


Thanks for the answer Jordan. 
There are entities and I have done indexes after your answer but keeps without running.
I'll wait to see if the new indexes loads

Cesar SC

unread,
Jan 17, 2018, 8:57:35 AM1/17/18
to Google App Engine
THIS CODE WORKS!

//WORKS
app.post('/getuserpost', (req, res) => {
const query = datastore.createQuery('usersData').filter('girl', req.body.girl_field);
datastore.runQuery(query).then((results) => {
const entities = results[0];
datastore.get(entities[0][datastore.KEY], (err, entity) => {
if (!err) {
res.send(entity);
}
});
});
});
Reply all
Reply to author
Forward
0 new messages