Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript castError Mongoose,转换为ObjectId失败_Javascript_Node.js_Mongodb_Mongoose_Ejs - Fatal编程技术网

Javascript castError Mongoose,转换为ObjectId失败

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('/:id)时,底部的app.get('/search')工作正常,但当我将其添加回时,它返回一个错误,即

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,
})