Ich habe eine Angular/Express/Node-App erstellt, die in Google Cloud ausgeführt wird und derzeit eine JSON-Datei verwendet, die als Datenquelle für meine Anwendung dient. Aus irgendeinem Grund (und das passiert nur in der Cloud), wenn Daten durch einen Ajax-Aufruf gespeichert und in die JSON-Datei geschrieben werden, scheint alles in Ordnung zu sein. Beim Aktualisieren der Seite sendet mir der Server (manchmal!) Jedoch die Version vor der Bearbeitung. Ich kann nicht sagen, ob dies ein Express-bezogenes, Node-bezogenes oder sogar Angular-bezogenes Problem ist, aber was ich sicher weiß, ist, dass ich das JSON überprüfe, das in der Antwort vom Server kommt, und das ist es wirklich manchmal die modifizierte Version, manchmal nicht, also ist es höchstwahrscheinlich nicht eckig cache-bezogen.Seltsames (Caching) Problem mit Express/Node
Die GET
:
router.get('/concerts', function (request, response) {
delete require.cache[require.resolve('../database/data.json')];
var db = require('../database/data.json');
response.send(db.concerts);
});
Die POST
:
router.post('/concerts/save', function (request, response) {
delete require.cache[require.resolve('../database/data.json')];
var db = require('../database/data.json');
var concert = request.body;
console.log('Received concert id ' + concert.id + ' for saving.');
if (concert.id != 0) {
var indexOfItemToSave = db.concerts.map(function (e) {
return e.id;
}).indexOf(concert.id);
if (indexOfItemToSave == -1) {
console.log('Couldn\'t find concert with id ' + concert.id + 'in database!');
response.sendStatus(404);
return;
}
db.concerts[indexOfItemToSave] = concert;
}
else if (concert.id == 0) {
concert.id = db.concerts[db.concerts.length - 1].id + 1;
console.log('Concert id was 0, adding it with id ' + concert.id + '.');
db.concerts.push(concert);
}
console.log("Added stuff to temporary db");
var error = commit(db);
if (error)
response.send(error);
else
response.status(200).send(concert.id + '');
});
Dies ist wahrscheinlich nicht viel sagen, also wenn jemand helfen interessiert ist, Sie das Problem here leben sehen. Wenn Sie für das erste Konzert auf modify
klicken und die programme
in etwas wie asd
ändern und dann speichern, sieht alles gut aus. Aber wenn Sie versuchen, die Seite ein paar Mal zu aktualisieren (in der Regel werden sogar 6-7 Versuche benötigt), wird das alte, unveränderte programme
angezeigt. Jeder Hinweis oder Rat sehr geschätzt, danke.