Utilizzo di documenti importati da MongoDB in DerbyJS

Ho una collezione MongoDB con dati che non sono stati salvati tramite la mia app Derby. Voglio interrogarlo e inserirlo nella mia app Derby.

Così, l’ho capito ed ecco il codice per farlo:

get '/:year', (page, model, params) -> query = model.query 'years', where: year: (parseInt params.year, 10) limit: 1 model.subscribe query, (err, year) -> if err console.log err page.render y: year.get(), year: params.year 

L’unico problema è che i documenti non hanno un derby id, quindi imposta l’objectid MongoDB (_id) sull’id derby . Ecco un esempio del JSON restituito da model.get() : https://gist.github.com/0a5426d2b28a940e8803

Non ho modo di sapere cosa sia l’objectid prima della query. Mi piacerebbe se l’ID restituito più di recente ( currID ) fosse nel livello più alto dell’object, quindi potrei semplicemente interrogarlo e impostare un riferimento al modello. Ho costruito un trucco per aggirarlo per ora, ma non è così liscio come vorrei che fosse. Il codice è qui sotto:

 getId = (obj, year) -> for x of obj return obj[x].id if obj[x].year is year -1 

Inoltre, c’è un modo per aggiornare i modelli senza distruggere alcuni modelli già sullo schermo? Invece di fare una pagina page.render semplicemente facendo un template.render ?

Grazie

Le query Racer sono state appena aggiornate in 0.3.11 e sono descritte in questo file readme: https://github.com/codeparty/racer/blob/master/lib/descriptor/query/README.md

NOTA: non è più necessario. Il sistema di query è stato aggiornato. Per favore vedi la risposta di Nate.

Ho parlato con lo sviluppatore di DerbyJS (nateps) e mi ha detto che stanno lavorando per migliorare il sistema di query. È ancora un lavoro in corso.

Per ora, ho costruito un trucco che prenderà un object contro cui confrontarsi e un object di parametri

 getId = (obj, params) -> ids = [] for x of obj i = 0 for y of params if obj[x][y] isnt params[y] break else if (++i is params.length) ids.push id: obj[x].id return ids 

Ad esempio, puoi inserire un object come questo:

 var obj = { "lskjfalksj23423": { id: "lskjfalksj23423", name: "random day", year: 2012, month: 12, day: 1 }, "aklsdjflkasdfd": { id: "aklsdjflkasdfd", name: "random day 2", year: 2012, month: 8, day: 1 } } 

e quindi un object da testare (ASSICURI DI AGGIUNGERE UNA CHIAVE DI LUNGHEZZA)

 var params = { month: 12, day: 1, length: 2 } 

e restituirà un array di ID corrispondenti: [{id: "lskjfalksj23423"}]

Nota: non ho testato l’esempio, quindi fammi sapere se hai problemi con esso. Questo dovrebbe essere obsoleto in pochi mesi comunque quando il sistema di query è ulteriormente sviluppato.