Javascript castError Mongoose,转换为ObjectId失败
因此,当我删除app.get('/:id)时,底部的app.get('/search')工作正常,但当我将其添加回时,它返回一个错误,即Javascript castError Mongoose,转换为ObjectId失败,javascript,node.js,mongodb,mongoose,ejs,Javascript,Node.js,Mongodb,Mongoose,Ejs,因此,当我删除app.get('/:id)时,底部的app.get('/search')工作正常,但当我将其添加回时,它返回一个错误,即 app.get('/search', async (req, res) => { console.log('Search Success') try { const searchQuery = req.query.keyword const properties = await Property.
app.get('/search', async (req, res) => {
console.log('Search Success')
try {
const searchQuery = req.query.keyword
const properties = await Property.find({ $or: [{name: {$regex: searchQuery, $options: 'i'}}, {desc: {$regex: searchQuery, $options: 'i'}}]})
mongoose.Types.ObjectId(properties._id)
res.render('property-grid.ejs', {properties: properties})
} catch (err) {
console.error(err);
}
})
这是我的模式
const castError = new CastError();
^
CastError: Cast to ObjectId failed for value "search" at path "_id" for model "Property"`
谢谢你 我很确定这是因为express从。一个很好的经验法则是把你更“具体”的路线放在顶部,把较小的路线放在底部
在这种情况下,您之所以会得到错误,是因为您认为您的路线实际上在点击
/:id
时,却在点击/search
。如果您在文件中交换这些路由的顺序,事情会更容易预测。您可以注销Id
?另外,您为什么要执行'mongoose.Types.ObjectId(properties.u id)
\u id`in/search
已经是ObjectId。在“/:id”路由之前/之上定义您的“/search”路由。现在您对搜索路由的请求被“/:id”路由截获,认为“id”参数的值是search。@AlexanderStaroselsky我的朋友告诉我这样做。。。我会改变它@纳文察哈尔哇,现在开始工作了!非常感谢你,先生!我真的不知道定义顺序会影响它
const castError = new CastError();
^
CastError: Cast to ObjectId failed for value "search" at path "_id" for model "Property"`
const propertySchema = new mongoose.Schema ({
name: String,
price: Number,
jenis: String,
lokasi: String,
alamat: String,
tipe: String,
luas: Number,
kt: Number,
km: Number,
carslot: Number,
picture: String,
desc: String,
})