findOne()不起作用 - 我的语法有问题吗?

时间:2016-02-05 20:22:06

标签: javascript mongodb mongojs

创建Db:

var mongojs = require('mongojs');
var db = mongojs('rodrigo-contatos', ['rodrigo-contatos']);

我尝试使用此代码在数据库中进行搜索,使用mongojs中的findOne,即代码:

app.get('/detalhesContato/:id', function(req, res){
var id = req.params.id;
console.log(id);
db.contatos.findOne({_id: mongojs.ObjectId(id)}, function(err, doc)    {
 console.log(err);
  res.json(doc);

});

console.log(id) id是正确的,但无论我做什么,findOne都无法正常工作;(。

" 567a16ba28dee028f4a8ad78< - 来自id的控制台日志

  

TypeError:无法读取属性' findOne'未定义的   /Users/Michel/Documents/AngularProjects/RodrigoBranasListaTelefonica/server.js:48:12"

2 个答案:

答案 0 :(得分:0)

使用mongojs,当您致电In [104]: df1.as_matrix() Out[104]: array([[ 1. , 2. , 1.23000002], [ 3. , 4. , 3.31999993]], dtype=float32) In [105]: df.as_matrix() Out[105]: array([[1.0, 2.0, 'a'], [3.0, 4.0, 'b']], dtype=object) 创建db对象时,需要明确标识要作为mongojs属性访问的馆藏。因此,由于您尝试访问db集合,因此需要在第二个(字符串数组)参数中为您的contatos调用提供该名称:

mongojs

或者您可以跳过var db = mongojs('rodrigo-contatos', ['contatos']); 的快捷访问并稍后获取该集合:

db

答案 1 :(得分:0)

Ok问题解决了你需要在创建数据库连接时识别集合。 只有findOne()和find()有用的有趣的方法就是这样:

public class SpringMvcIntializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { ApplicationConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { WebMvcConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

但是像这样,使用findOne()工作就像魅力一样:

var db = mongojs('rodrigo-contatos', ['rodrigo-contatos']);