3
我知道它可能通過數據庫調用找到此信息,但出於好奇,例如在節點中如果我有一個貓鼬文檔ID數組。我怎樣才能模仿一個indexOf函數來判斷是否有另一個mongoId呢?如何在數據庫調用外的mongoIds數組中找到mongoId
我只問,因爲直接比較ID不起作用,需要使用`objectId.equals()'函數。是否有一個mongoose/mongoId函數爲id執行類似於indexOf的操作?
我知道它可能通過數據庫調用找到此信息,但出於好奇,例如在節點中如果我有一個貓鼬文檔ID數組。我怎樣才能模仿一個indexOf函數來判斷是否有另一個mongoId呢?如何在數據庫調用外的mongoIds數組中找到mongoId
我只問,因爲直接比較ID不起作用,需要使用`objectId.equals()'函數。是否有一個mongoose/mongoId函數爲id執行類似於indexOf的操作?
如果你的問題是你不確定哪個是字符串,或者在比較中是ObjectId,那麼只需將所有內容轉換爲「字符串」即可。所有對象都有.toString()
,甚至是字符串。而數組轉換隻需使用.map()
。
例子:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var objSchema = new Schema({
});
var Obj = mongoose.model('Obj',objSchema);
var arrayTest1 = [],
arrayTest2 = [];
for (x = 0; x < 10; x++) {
var obj = new Obj();
arrayTest1.push(obj.id);
arrayTest2.push(obj.id.toString());
}
var el1 = arrayTest1[4],
el2 = arrayTest2[3];
[el1,el2].forEach(function(el) {
console.log(el);
});
console.log(arrayTest1.indexOf(el1));
console.log(arrayTest2.indexOf(el2));
console.log(arrayTest1.map(function(el) {
return el.toString()
}).indexOf(el1.toString()));
console.log(arrayTest2.map(function(el) {
return el.toString()
}).indexOf(el2.toString()));
兩對陳述的評估自己的正確的索引匹配。所以第二種形式對於對象類型是通用的。 ObjectId或盯着任何一方。