Mongoose говорит, что у меня 46 записей, MongoDB говорит, что у меня ноль?

#mongodb #node.js #mongoose

#mongodb #node.js #mongoose

Вопрос:

Следующий тестовый скрипт говорит, что у меня 46 записей:

 var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var DealSchema = new Schema({
  title : String,
});

var Deal = mongoose.model('Deal', DealSchema);  

mongoose.connect('mongodb://localhost/dealsite');
mongoose.connection.on("open", function(){
  console.log("Mongoose connected");
  Deal.count({}, function( err, count){
    console.log( "Records:", count );
  })
});
  

вывод:

 $ node testmongo.js 
Mongoose connected
Records: 46
  

Хотя, если я попытаюсь прочитать строки, используя оболочку mongo, я получу другую историю:

 $ mongo localhost/dealsite
MongoDB shell version: 1.4.4
url: localhost/dealsite
connecting to: localhost/dealsite
type "exit" to exit
type "help" for help
> db.dealsite.count()
0
> db.dealsite.Deal.count()
0
  

Где прячутся мои записи?

Ответ №1:

В MongoDB попробуйте:

 use dealsite
db.deals.count()
  

Если вы создадите модель Mongoose под названием «Deal», она создаст и будет использовать коллекцию MongoDB под названием «deals».

Ответ №2:

вы пропустили утверждение :

 "use Deal"    [ use DATABASE_NAME ]
  

прежде чем делать

 db.dealsite.count()
  

Комментарии:

1. Когда я подключаюсь к БД таким образом, она уже использует dealsite базу данных. Я также пытался просто вручную выбрать базу данных, но это не дало никакого эффекта. В руководстве есть примеры такого способа подключения: mongodb.org/display/DOCS /…

2. да, не видел вашу строку подключения. извините. что возвращает функция FIND или FINDONE в вашей коллекции?