在Node中连接猫鼬时访问数据库?

时间:2018-08-11 19:19:18

标签: node.js mongodb

关于访问节点中的Mongoose数据库有一个相当基本的问题。因此,在服务器文件中,我已经进行了必要的导入和所有操作,并且已经连接到数据库,如下所示:

mongoose.connect(myURL, function(err) {if(err){console.log(err)}})

当我进入数据库的终端时,它说它已连接到myUrl,然后我可以做类似的事情:

db.nameOfCollection.find("whatever")

得到我想要的。但是,现在我想在Node服务器文件中执行相同的操作,并且我对如何执行此操作感到非常困惑。当我这样做

db.collectionName.find("whatever")

它显然不起作用,因为未定义db。因此,我为我的一个集合导入了模型:

var model = require('path/to/model')

现在,当我执行console.log(model.find())时,它当然不会给我任何数据,但是它确实在底部说了这一点:

  _fields: undefined,
  _update: undefined,
  _path: undefined,
  _distinct: undefined,
  _collection:
   NodeCollection {
     collection:
      NativeCollection {
        collection: null,
        opts: [Object],
        name: 'nameOfCollection',
        collectionName: 'nameOfCollection',
        conn: [NativeConnection],
        queue: [],
        buffer: true,
        emitter: [EventEmitter] },
     collectionName: 'nameOfCollection' },
  _traceFunction: undefined }

我看到它说数据库中的nameOfCollection,但是我不确定如何访问集合本身。关于我能做什么的任何想法?

1 个答案:

答案 0 :(得分:0)

Node.JS支持非阻塞功能,您的情况将使用它。因此,您应该在Node.JS中练习一些有关回调,promise 的示例。之后,您将了解并解决它。

根据您的情况,在导入模型后:

var model = require('path/to/model')

您可以通过以下方式访问收藏集:

model.find().then(youDataYouNeed => {
    console.log(youDataYouNeed)
}

由于功能find返回了Promise,因此您可以使用 .then()并附加实现处理程序,您可以在其中获取数据该集合中的一个。