使用数据库mongodb

时间:2015-05-21 10:47:06

标签: node.js mongodb express

我试图在node.js中按名称创建搜索选项,如果找到它将在网页中显示的名称,它将搜索本地数据库。但我在这种语法中遇到错误:user.find({id:findname},我在下面的代码中使用过。

router.get('/', function(req, res, next) {
var findname = req.body.findname;
 res.render('detail', { title: 'Detail' });
});
mongoose.connect('mongodb://localhost/student');
var testSchema = new mongoose.Schema({
id : Number,
name : String,
email : String,
age : Number,
college : String
});

var user = mongoose.model('stud', testSchema, 'stud');

router.post('/show', function(req, res){
  user.find({name : findname}, function(err, docs){
       res.render('detail',{users:docs});
  });

});

2 个答案:

答案 0 :(得分:1)

所以,问题是你在一个函数中定义了findname变量,并试图在另一个函数中使用它。为了完成您正在寻找的内容,您的router.post函数应该看起来像这样:

router.post('/show', function(req, res){
  var findname = req.body.findname
  user.find({name : findname}, function(err, docs){
    res.render('detail',{users:docs});
  });
});

确保您使用正确的中间件来填充req.body对象,否则代码仍无效。

答案 1 :(得分:0)

我建议你阅读mongoose文档Mongoose Doc。 id(和_id)字段由Mongoose自动分配。 id是_id上的虚拟getter,它是_id的字符串或十六进制表示。尝试按 public IEnumerable<MyElementType> Elements { get { return (IEnumerable<MyElementType>)GetValue(ElementsProperty); } set { SetValue(ElementsProperty, value); } } public static readonly DependencyProperty ElementsProperty = DependencyProperty.Register("Elements", typeof(IEnumerable<MyElementType>), typeof(MyUiUserControlType), new UIPropertyMetadata(null)); 更改字段id的名称。

无论如何,您的myId是类型编号,并且您尝试将其与id匹配,我猜这是一个字符串?这里有类型不匹配吗?