Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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
Javascript node.js:Mongodb.collection.find()在collection.insert工作时不工作_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript node.js:Mongodb.collection.find()在collection.insert工作时不工作

Javascript node.js:Mongodb.collection.find()在collection.insert工作时不工作,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我使用node.js/express,我有一个Mongodb来存储一些数据集。在网页上,用户可以输入、编辑和删除数据(一切正常)。例如,要添加数据,我有以下代码: router.post('/addset', function(req,res) { var db = req.db; var collection = db.get('paramlist'); collection.insert(req.body, function(err, result){

我使用node.js/express,我有一个Mongodb来存储一些数据集。在网页上,用户可以输入、编辑和删除数据(一切正常)。例如,要添加数据,我有以下代码:

 router.post('/addset', function(req,res) {
    var db = req.db;
    var collection = db.get('paramlist');
    collection.insert(req.body, function(err, result){
        res.send(
            (err === null) ? { msg: '' } : { msg: err }
        );
    });
});
在我的app.js文件中,我包含以下行

// Database
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/paramSet1');
以及

app.use(function(req,res,next){
    req.db = db;
    next();
});
collection.find({name:req.body.name}).limit(1).size()
为了在代码的其余部分中访问数据库(遵循本教程:,我是这些方面的初学者)

所有这些都很好。我的问题如下:如果数据库中已经存在同名的数据集,我想添加一个测试,并向用户发送消息。根据这个答案,我尝试使用collection.find.limit(1.size()),但我得到了错误

undefined is not a function
我试过以下的方法。在上面的cost(router.post)中,我尝试在行var集合之后添加

var findValue = collection.find({name:req.body.name});
如果我接着执行console.log(findValue),就会得到一个巨大的JSON输出。然后我尝试了console.log(findValue.next()),但得到了相同的错误(undefined不是函数)。我也试过了

collection.find({name:req.body.name}).limit(1)
以及

app.use(function(req,res,next){
    req.db = db;
    next();
});
collection.find({name:req.body.name}).limit(1).size()
但也得到了这个错误。总之,collection.insert、collection.update和collection.remove会删除所有工作,但find()不会。另一方面,当我进入mongo shell时,该命令工作正常

如有任何提示和想法,我将不胜感激

编辑: console.log(findValue)的输出为:


第一件看起来不正确的事情是find的语法不正确。您需要将其作为函数调用。尝试:

collection.find({name:req.body.name}).limit(1).size();

find
返回a,而不是匹配的文档本身。但更适合您的情况是使用:


如果您在该网站上使用该方法 你必须改变你的代码

collection.find({name:req.body.name}).limit(1)
像这样使用它

collection.find({name:req.body.name},{limit:1})
collection.find({name:req.body.name},{limit:1,project:{a:1},skip:1,max:10,maxScan:10,maxTimeMS:1000,min:100})
如果你想增加更多的选择 你喜欢这样吗

collection.find({name:req.body.name},{limit:1})
collection.find({name:req.body.name},{limit:1,project:{a:1},skip:1,max:10,maxScan:10,maxTimeMS:1000,min:100})
你可以在这里找到所有你可以这样使用的东西

app.get('/', (req, res) => {
  db.collection('quotes').find().toArray((err, result) => {
    console.log(result);
    })
})

谢谢你的回答。事实上,这就是我曾经尝试过的,也是我犯错误的原因,但当我提出问题时,我打错了。非常抱歉。我现在编辑了这个问题。你说你得到了巨大的JSON输出。它是否包含预期的数据?如果无法读取,请尝试JSON格式化程序。我已在问题中添加了输出。我认为它不包含预期的数据。从该输出中,我没有看到返回“limit”函数,但我确实看到了成功、错误、完成等。也许您安装的Mongo版本与您的应用程序使用的Mongo版本不同?尝试调用find()返回的方法之一谢谢!这似乎解决了我的问题。我仍然不知道为什么限制(1)不起作用,但是非常感谢。但是我如何找到多个同名的记录呢?