Я использую node.js/express, и у меня есть Mongodb для хранения некоторых наборов данных. На веб-странице пользователь может вводить, редактировать и удалять данные (все работает нормально). Например, для добавления данных У меня есть следующий код:node.js: Mongodb db.collection.find() не работает во время работы collection.insert
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 findValue = collection.find({name:req.body.name});
Если я тогда делать console.log (findValue), я получаю огромный выход JSON. Затем я попробовал console.log (findValue.next()), но я получаю ту же ошибку (undefined не является функцией). Я также попытался
collection.find({name:req.body.name}).limit(1)
, а также
collection.find({name:req.body.name}).limit(1).size()
, но и получить эту ошибку. Итак, в общем, collection.insert, collection.update и collection.remove все работают, но find() не делает. С другой стороны, когда я вхожу в оболочку монго, команда отлично работает.
Я был бы признателен за любые рекомендации и рекомендации.
Edit: Выход на 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' } }
Спасибо! Это, похоже, решает мою проблему. Все еще не уверен, что я понимаю, почему ограничение (1) не работает, но большое спасибо. – Tokeloshe
Но как найти несколько записей с тем же именем? –