【问题标题】:How to query mongoDB using mongoose?如何使用 mongoose 查询 mongoDB?
【发布时间】:2015-07-22 12:55:55
【问题描述】:

如何使用 mongoose 和 node.js 查询 MongoDB?我有它可以将我的 JSON 对象插入我的数据库的位置,但是我尝试从数据库返回 JSON 对象的所有方法都返回 null 或仅返回有关数据库的信息。

有没有什么好方法使用猫鼬能够查询数据库类似的方法:

var cursor = db.collection.find()
var JSONobject = cursor.next()

这是我现在的代码中的内容:

mongoose.connect('mongodb://localhost/myDB');
mongoose.connection.on('error', console.error.bind(console, 'connection error:'));
var cursor = mongoose.connection.db.contents.find();
console.log(cursor.next());

这会在该行引发错误:

var cursor = mongoose....

声称'无法调用未定义的'find'方法'。

请注意,我的集合“内容”确实存在,并且它包含一个 JSON 文档。我知道这一点是因为我使用 mongo shell 手动导航到该集合。

编辑:我对查询数据库的替代方法持开放态度。我只是希望能够一次从我的数据库返回一个 JSON 对象,同时跟踪客户端在数据库中的位置。

【问题讨论】:

  • 您有想要查询的特定猫鼬模型吗?如果没有,那么使用 mongoose ODM 就没有多大意义了。使用本机 mongoDB 驱动程序,您的要求会更直接。
  • 太好了!您应该考虑删除此问题,因为它对未来的 SO 读者几乎没有用处。

标签: json node.js mongodb


【解决方案1】:

使用mongoose查询mongoDB的一种方法如下:

Content.findOne().exec(function(err,docs){console.log(docs)});

Docs 包含 JSON 对象。像访问任何其他对象一样访问其属性。

注意,此方法使用异步回调。因此,您不能将 JSON 对象文档存储到变量中,以便在函数之外使用 JSON 文档信息。因此,您需要使用函数内部的 JSON 文档对象信息执行所需的任何操作。

例如,我需要查询信息来为我的 get api 提供文件路径。因此,结果如下:

//get
app.get('/api/media/', function(req,res){
    Content.findOne().exec(function(err,docs){res.sendFile(path.join(__dirname, '/api/media/', docs.filename))});

});

注意,Content 是我的模式的模型,它的参数之一是文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2017-10-19
    相关资源
    最近更新 更多