Mam dużą kolekcję 300 question
obiektów w bazie danych test
. Mogę łatwo wchodzić w interakcje z tą kolekcją za pomocą interaktywnej powłoki MongoDB; Jednak gdy próbuję pobrać kolekcję przez Mongoose w aplikacji express.js, otrzymuję pustą tablicę.
Moje pytanie brzmi: w jaki sposób mogę uzyskać dostęp do już istniejącego zestawu danych zamiast odtwarzać go w trybie ekspresowym? Oto kod:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
mongoose.model('question', new Schema({ url: String, text: String, id: Number }));
var questions = mongoose.model('question');
questions.find({}, function(err, data) { console.log(err, data, data.length); });
To daje:
null [] 0
Model.collection.insert();..
mongoose.connect("mongodb://localhost/fromlab"); var Schema = mongoose.Schema; var User = mongoose.model("User", new Schema({}), "users"); User.find({}, function(err, doc){ console.log((doc)) })
Oto abstrakcja odpowiedzi Willa Nathana, jeśli ktoś chce tylko łatwego dodatku do kopiowania i wklejania:
po prostu zrób,
find(collection_name, query, callback);
aby otrzymać wynik.na przykład, jeśli mam dokument {a: 1} w kolekcji „foo” i chcę wymienić jego właściwości, robię to:
źródło
Możesz zrobić coś takiego, niż uzyskasz dostęp do natywnych funkcji mongodb wewnątrz mongoose:
źródło
Miałem ten sam problem i mogłem uruchomić zapytanie bez schematu, używając istniejącego połączenia Mongoose z poniższym kodem. Dodałem proste ograniczenie „a = b”, aby pokazać, gdzie można dodać takie ograniczenie:
źródło
question
w powyższym kodzie nafs.files
i gotowe.Czy na pewno połączyłeś się z bazą danych? (Pytam, ponieważ nie widzę określonego portu)
próbować:
Możesz także „pokazać kolekcje” w powłoce mongo, aby zobaczyć kolekcje w swojej bazie danych - może spróbuj dodać rekord za pośrednictwem mangusty i zobaczyć, gdzie się kończy?
Patrząc na parametry połączenia, powinieneś zobaczyć rekord w „testowej” bazie danych.
Mam nadzieję, że to pomoże!
źródło
questions
kolekcji, gdy dane, do których próbuję uzyskać dostęp, znajdują się wquestion
kolekcji. Czy Mongoose automatycznie tworzy liczbę mnogą nazw kolekcji / modeli?Coś innego, co nie było oczywiste, przynajmniej dla mnie, polegało na tym, że podczas używania trzeciego parametru Mongoose, aby uniknąć zastąpienia rzeczywistej kolekcji nową o tej samej nazwie,
new Schema(...)
jest on właściwie tylko symbolem zastępczym i nie koliduje z istniejącym schemat takdziała dobrze i zwraca wszystkie pola - nawet jeśli rzeczywisty (zdalny) schemat nie zawiera żadnego z tych pól. Mongoose nadal będzie go chciał
new Schema(...)
, a zmienna prawie na pewno go nie zhakuje.źródło