gpt4 book ai didi

javascript - node.js:Mongodb db.collection.find() 在 collection.insert 工作时不工作

转载 作者:IT老高 更新时间:2023-10-28 12:30:43 26 4
gpt4 key购买 nike

我正在使用 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();
});

让数据库在其余代码中可访问(按照本教程:http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/,我是这些东西的初学者)。

所以这一切都很好。我的问题如下:如果数据库中已经存在同名的数据集,我想添加一个测试并向用户发送消息。按照这个答案 How to query MongoDB to test if an item exists?我尝试使用 collection.find.limit(1).size() 但我收到错误

undefined is not a function

我尝试了以下方法。在上面的成本(router.post)中,我尝试在 var 集合之后添加...

var findValue = collection.find({name:req.body.name});

如果我然后执行 console.log(findValue),我会得到一个巨大的输出 JSON。然后我尝试了 console.log(findValue.next()) 但我得到了同样的错误(未定义不是一个函数)。我也试过了

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

还有

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

但也会出现此错误。所以总而言之,collection.insert、collection.update 和 collection.remove 都有效,但 find() 无效。另一方面,当我进入 mongo shell 时,该命令工作正常。

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

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

    { col:
{ manager:
{ driver: [Object],
helper: [Object],
collections: [Object],
options: [Object],
_events: {} },
driver:
{ _construct_args: [],
_native: [Object],
_emitter: [Object],
_state: 2,
_connect_args: [Object] },
helper: { toObjectID: [Function], isObjectID: [Function], id: [Object] },
name: 'paramlist',
col:
{ _construct_args: [],
_native: [Object],
_emitter: [Object],
_state: 2,
_skin_db: [Object],
_collection_args: [Object],
id: [Object],
emitter: [Object] },
options: {} },
type: 'find',
opts: { fields: {}, safe: true },
domain: null,
_events: { error: [Function], success: [Function] },
_maxListeners: undefined,
emitted: {},
ended: false,
success: [Function],
error: [Function],
complete: [Function],
resolve: [Function],
fulfill: [Function],
reject: [Function],
query: { name: 'TestSet1' } }

最佳答案

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

collection.findOne({name:req.body.name}, function(err, doc) {
if (doc) {
// A doc with the same name already exists
}
});

关于javascript - node.js:Mongodb db.collection.find() 在 collection.insert 工作时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com