用户模型:
var User = new Schema({
username: String,
password: String
})
有一个用户名为:"六"
在mongo shell中,这有效:
db.users.findOne({username:'six'})
用mongoose工作:
User.findOne({_id: req.params.id}, function(err, user) {
res.json(user);
});
但这并不是:
User.findOne({username:'six'}, function(err, user) {
if(err) console.log(err);
res.json(user);
});
没有返回错误但也没有用户。 我错过了什么,我看不出来。 感谢。
答案 0 :(得分:0)
尝试将username
放在单引号中,如下所示:
User.findOne({'username':'six'}, function(err, user) {
if(err) console.log(err);
res.json(user);
});
答案 1 :(得分:0)
我删除了User.findOne({_id: req.params.id}
中的router.get('/:id',)
工作User.findOne({'username':'six'}
,该router.get('/:username')
位于- /:id
之前的非工作/:username
之前,它开始有效。
所以我没有2 router.get('/:XXX') - 即使它们是不同的路径if (req.params.id == 0) next('route');
和 [ConfigurationProperty("contacts")]
[TypeConverter(typeof(StringSplitConverter))]
public IEnumerable<string> Contacts
{
get
{
return (IEnumerable<string>)base["contacts"];
}
}
我认为快速路由处理程序允许路径有多个路由,并且如果两个路由器都是router.get('/:id)那么可能会出现问题,那么第二个路由器永远不会被调用(发生在我的/:用户名路由)当第一个路由结束请求 - 响应周期。但我错误地认为道路是不同的,不适用。 我向@Lucas Watson道歉,因为我不确定他是否会发现我的错误。
作为替代方案,我可以补充一下:
public class StringSplitConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string) || base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
return string.Format("{0}", value).Split(',');
}
}
到/:id路由回调。