2015-04-02 2 views
0

У меня есть две схемы, использующие МангустMongoDb.js/Mongoose найти() перевести строку в ObjectId

Схема 1

var schema = mongoose.Schema({ 
    name: { 
     type: String, 
     required: true 
    } 
}); 
return mongoose.model('User', schema); 

Схема 2

var schema = mongoose.Schema({ 
    name: { 
     type: String, 
     required: true 
    }, 
    user: { 
     type: mongoose.Schema.ObjectId, 
     ref: 'User', 
     required: true 
    } 
}); 
return mongoose.model('Page', schema); 

Мои Данные в подборке страниц

_id
551b0cdf63dc96e9c39de0f8
551b0d1563dc96e9c39de0f9
551b0d2d63dc96e9c39de0fa
551b0d4363dc96e9c39de0fb
551daae0f4cb312c62dcbc1e

имя
Cazaquistao
Россия
Китай
Австралия
Сальвадор

пользователь
5515c7aaaf6d59fea26d7185
5515c7aaaf6d59fea26d7185
5515c7aaaf6d59fea26d7185
5515c7aaaf6d59fea26d7185
5515c7c9af6d59fea26d7186

, когда я искать в схеме 2 пользователем, я не нашел каких-либо результатов.

Mongoose translate the mongoose ошибочно преобразует запрос.

Запрос

var test = Page.find().select("_id").where({"user" : "5515c7aaaf6d59fea26d7185"}).exec()     
.then(function (t) {     
    console.log("hi", t);     
    }); 

запросов Перевод ошибочно

db.pages.find({ user: ObjectId("5515c7aaaf6d59fea26d7185") }) 

никаких результатов

запроса, как это должно быть

db.pages.find({ user: "5515c7aaaf6d59fea26d7185" })= 

4 Результаты

Любые предложения о том, что нужно сделать, чтобы обойти эту проблему?

ответ

0

Если user является строкой в ​​ваших документах страниц, то ваша схема должна отражать это, или Mongoose попытается применить его к типу в вашей схеме (в этом случае ObjectId).

Так что user строка в схеме:

var schema = mongoose.Schema({ 
    name: { 
     type: String, 
     required: true 
    }, 
    user: { 
     type: String, 
     ref: 'User', 
     required: true 
    } 
}); 
+0

Нет, пользователь не делает строковый объект, но я думаю, что я знаю, что происходит. Коллекция была создана неправильно. – Thiago

+0

Хорошо. Вероятно, лучше всего просто удалить вопрос. – JohnnyHK

-1

Я решил пропусканием ObjectId, а не строки

Смежные вопросы