Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用node.js中的mongoose查询mongoDB_Node.js_Mongodb_Mongoose - Fatal编程技术网

无法使用node.js中的mongoose查询mongoDB

无法使用node.js中的mongoose查询mongoDB,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,假设我的mongoDB:db.co中有一个集合 并且只有一份文件: { "_id" : ObjectId("50d083e32cdcf7ce065b616c"), "age" : 22, "friends" : [ "Tom"], "location" : "NY", "name" : "lee", "skill" : [ "javascript", "java" ] } 然后我想通过以下代码在node.js中用mongoose查询它: var coSchem

假设我的mongoDB:db.co中有一个集合 并且只有一份文件:

{ "_id" : ObjectId("50d083e32cdcf7ce065b616c"), 
  "age" : 22, 
  "friends" : [ "Tom"], 
  "location" : "NY", 
  "name" : "lee", 
  "skill" : [ "javascript", "java" ] 
 }
然后我想通过以下代码在node.js中用mongoose查询它:

var coSchema = mongoose.Schema( {
    age: Number,
    friends: Array, 
    location: String,
    name: String,
    skill: Array
})

var Co = mongoose.model('Co', coSchema);
function findSomeoneInCo (name) {
  Co.find({"name": name}, function (err, doc) {
    if (err) {
        console.log('find some one failed: ' + err);
        return;
    }
    console.log('find successed: ' + doc);
  })
}

findSomeoneInCo("lee");
但它什么也没给我


我的代码有什么问题?如何获得相应的查询结果?

.find异步工作,这意味着它的回调在函数已经完成时运行


.find是异步工作的,这意味着它的回调在您的函数已经运行时运行


在确定要使用的集合名称时,Mongoose将小写的模型名称复数化。因此,默认情况下,模型名为“Co”时,它将在cos集合中查找

要覆盖默认值并与现有的共同收藏对齐,请执行以下操作:

var Co = mongoose.model('Co', coSchema, 'co');

在确定要使用的集合名称时,Mongoose将小写的模型名称复数化。因此,默认情况下,模型名为“Co”时,它将在cos集合中查找

要覆盖默认值并与现有的共同收藏对齐,请执行以下操作:

var Co = mongoose.model('Co', coSchema, 'co');

我注意到您要查找的回调具有以下参数:err,doc

find总是返回一个数组,所以您确实希望它是:err,docs

或 使用芬顿

异步内容在您发布的代码中不应该是一个问题,嵌套回调仍将被执行。你确定你的连接正常吗。我将运行一个开放式查询:

Co.find({}, function(err, docs){
 console.log(docs);
}

只需检查集合中是否有内容

我注意到要查找的回调包含以下参数:err,doc

find总是返回一个数组,所以您确实希望它是:err,docs

或 使用芬顿

异步内容在您发布的代码中不应该是一个问题,嵌套回调仍将被执行。你确定你的连接正常吗。我将运行一个开放式查询:

Co.find({}, function(err, docs){
 console.log(docs);
}

只需检查集合中是否有某些内容

Mongoose在任何凝乳操作期间都会将您的型号名称复数化, 使用此选项并检查:

var Co = mongoose.model('Co', coSchema, 'co'); //Even the case matters


Mongoose会在任何凝乳操作中使您的型号名称复数, 使用此选项并检查:

var Co = mongoose.model('Co', coSchema, 'co'); //Even the case matters


.find是异步的。但是console.log应该可以工作-它们可以吗?另请参见@MaxGherkins:Yes,它可以正常工作。find是异步的。console.log应该可以工作,是吗?另请看@MaxGherkins:是的,它正常工作。我尝试了这种方法,但没有成功。事实上,第一种方法没有回调,我可以查询另一个集合的数据。我可以查询这个。我尝试了这种方法,但没有成功。事实上,第一种方法没有回调,我可以查询其他集合的数据。只需查询此集合即可