const express = require('express');
const app = express();
const Register = require('./model/register')
require('./db/conection');
app.use(express.json());
app.get('/' , async(req,res)=>{
res.send("hello")
})
app.get('/search/:key',async(req,res)=>{
let sKey=req.params.key;
console.log(typeof(sKey));
let searchData=await Register.findOne({'$or':[
{name:sKey},
{email:sKey},
{address:sKey},
{mobile:sKey}
]})
res.send(searchData);
})
app.listen(5000,()=>{
console.log("server start");
console.log(`http://localhost:5000`)
});
我试图创建搜索API,通过电子邮件或移动的号码获取特定用户的详细信息,我的代码显示此错误:UnhandledPromiseRejectionWarning:CastError:在vishaltyagi@gmail.com模型“users”的路径“移动的”处,值“www.example.com”(类型字符串)转换为数字失败。
我的模型文件是-
const mongoose = require('mongoose')
//const {Schema} = mongoose
const registerSchema = new mongoose.Schema ({
name:String,
email:String,
address:String,
mobile:Number,
password:String,
date:{type:Date , default:Date.now}
});
const Register = mongoose.model('users',registerSchema);
module.exports= Register;
2条答案
按热度按时间3pvhb19x1#
你能把你的密码-
我的代码,让我知道结果-
这可能只适用于电子邮件。但先让我知道结果。我会帮助你更多。
iqxoj9l92#
在registerSchema中,您已经将移动的字段定义为Number。因此,您必须将其设置为字符串或检测搜索值是字符串还是数字。如果值是一个数字,那么你可以添加一个自定义的where条件,如下所示。