Storing raw JS objects and querying according to pointer equality `===`
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- clojure, javascript
- Ambito
- database
Direzione di ricerca
Inizia riproducendo i due esempi JavaScript nell’issue e confronta il modo in cui class instances e plain objects vengono memorizzati e associati dalla query. Traccia il comportamento di value-comparison e serialization, quindi chiarisci o implementa la regola per raw-object identity; il lavoro è completato quando le query previste funzionano e la regola di confronto è coperta da test o documentazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I want to use datascript to store "pointers" to raw JS objects, and be able to query for them.
So I did a small test to see if it could work.
First with a class which works:
const d = require('datascript');
class DummyObj {}
const obj1 = new DummyObj;
const obj2 = new DummyObj;
const db = d.empty_db();
const db1 = d.db_with(db, [[':db/add', 1, 'obj', obj1], [':db/add', 2, 'obj', obj2]]);
d.q('[:find (pull ?e [*]) :in $ ?obj :where [?e "obj" ?obj]]', db1, obj1); // only entity 1
d.q('[:find (pull ?e [*]) :in $ ?obj :where [?e "obj" ?obj]]', db1, obj2); // only entity 2
Second with just a normal object:
const d = require('datascript');
const obj1 = { x: 1 };
const obj2 = { x: 1};
const db = d.empty_db();
const db1 = d.db_with(db, [[':db/add', 1, 'obj', obj1], [':db/add', 2, 'obj', obj2]]);
d.q('[:find (pull ?e [*]) :in $ ?obj :where [?e "obj" ?obj]]', db1, obj1); // []
d.q('[:find (pull ?e [*]) :in $ ?obj :where [?e "obj" ?obj]]', db1, obj2); // []
But the second one doesn't, it just returns nothing.
Also are certain objects ever directly serialised? What determines whether to compare objects by their serialised form vs by their object pointer?
- Lingua principale
- Clojure
- Stelle
- 5.8k
- Fork
- 318
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di tonsky/datascript
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
tonsky/datascript#498 · 1 commento ·
-
Datascript MCP Server Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
tonsky/datascript#489 ·
-
Stack overflow when transacting :db.type/tupleAttrs with a :db.type/ref attr through :db.fn/call Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
tonsky/datascript#483 · 2 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
tonsky/datascript#470 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
tonsky/datascript#441 · 1 commento · 3 reazioni ·
Tutte le issue di tonsky/datascript
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
.Team/Metabot Priority:P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
needs triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
scalar-labs/scalar-jepsen#222 · 1 commento ·