2015-04-02 75 views
0

一個字符串我有利用貓鼬MongoDb.js /貓鼬發現()翻譯中的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搜索,我不找到任何結果。

貓鼬翻譯貓鼬錯誤地轉換查詢。

查詢

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 2015-04-03 12:23:23

+0

好的。可能最好只是刪除問題。 – JohnnyHK 2015-04-03 15:05:08

-1

我解決了傳遞對象ID而不是字符串