【问题标题】:findOne() doesn't work - is something wrong with my syntax?findOne() 不起作用 - 我的语法有问题吗?
【发布时间】:2016-02-06 05:20:38
【问题描述】:

创建数据库:

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

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

【问题讨论】:

  • 好的,我做到了,你能看到吗?
  • 问题是 contatos 未定义。试试 console.log(db),你会看到没有 contatos。我从来没有以你使用的方式使用过 mongo,但这里有一个猜测:db['rodrigo-contatos'].findOne
  • 控制台日志(db)返回db没有问题

标签: javascript mongodb mongojs


【解决方案1】:

使用mongojs,当您调用mongojs 来创建db 对象时,您需要将要访问的集合明确标识为db 的属性。因此,因为您正在尝试访问 contatos 集合,所以需要在第二个(字符串数组)参数中将该名称提供给您的 mongojs 调用:

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

或者您可以跳过来自db 的快捷方式访问,稍后获取集合:

var contatos = db.collection('contatos');
contatos.findOne(...);

【讨论】:

  • 嗯,不可能同时保持与所有数据库的连接?
  • 这段代码在没有识别的情况下仍然有效: db.collection('contatos').find(function(err, docs){ console.log(docs); res.json(docs); });
【解决方案2】:

好的问题解决了,您需要在创建数据库连接时识别集合。 有趣的是,只有 findOne() 和 find() 才能正常工作:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2021-08-25
    • 2014-01-23
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多