Articles of mongodb

Nodejs,bcrypt,Mongoose

我对Nodejs / Mongo非常陌生(有Mongoose)。 我正在使用bcrypt模块来从HTML表单中散列密码。 在我的db.create函数中,我无法在mongodb中存储variablesstorehash。 我没有得到任何错误,但在数据库中只是空白。 我已经越过了检查代码的每一行,似乎是工作。 我不明白为什么我不能将variables存储为“password:storehash”,而我被允许存储“password:'test'”之类的东西 我确定我在某个地方做了一些noob错误。 我会很感激任何帮助! var db = require('../models/users.js'); var bcrypt = require('bcryptjs'); module.exports.createuser = function(req,res){ var pass = req.body.password; var storehash; //passsord hashing bcrypt.genSalt(10, function(err,salt){ if (err){ return console.log('error in hashing the password'); } bcrypt.hash(pass, salt, function(err,hash){ if (err){ return console.log('error in hashing #2'); } else { console.log('hash of […]

如何使用$ filter获得数组字段的过滤元素

我在MongoDB中有一个列车集合,它有以下几行: { "_id" : ObjectId("594a441fcbd8f815dc42436d"), "trainnum" : "011Ф", "startplace" : "Tashkent", "destination" : "Samarkand", "weeks" : [ "1", "2", "3" ], "vagons" : [ { "_id" : ObjectId("594a6a42231e5912342ff903"), "numvag" : "01K", "seatcount" : "30", "reserves" : [ { "numseats" : "1-10", "numreserve" : "1", "_id" : ObjectId("594a6a42231e5912342ff904") } ], "date2" : ISODate("2017-06-30T00:00:00Z"), "date1" : ISODate("2017-06-05T00:00:00Z") […]

Mongoose更新文档或插入新文档如果没有findID(Express REST API)

我已经build立了一个Express REST Api,并且想实现一个检查某个对象ID是否存在的任务。 如果该ID存在于Mongo数据库中,我想使用Put请求来更新这个文档。 这部分已经在我的代码中工作。 如果ID尚不存在于数据库中,我想创build一个新的文档。 要做到这一点,我试图将“upsert”选项设置为true,但是,如果我现在做一个ID的放入请求,这是不是在我的数据库,但它回来的错误: throw er; // Unhandled 'error' event ^ CastError: Cast to ObjectId failed for value "34455ab67" at path "_id" for model "event" 这里是我的事件模型代码: var mongoose = require('mongoose'); var eventSchema = mongoose.Schema({ name: { type: String, required: true } }); var Events = module.exports = mongoose.model('event', eventSchema, 'event'); module.exports.updateEvent = […]

你应该发送DB错误给用户吗?

在我写的NodeJS / MongoDB服务器中,我有很多的API调用来存储用户和数据库中的内容。 Mongoose已经调用了MongoDB,在查询之后,它将返回一个带有错误(如果有的话)和一个文档(如果有一个返回的)的callback函数。 我想知道如果我应该把错误发送给用户,扔它(停止整个服务器),或只发送500错误。 例: accountDocument.save(function (err, account) { if (err){ res.status(500).json(err); // Option 1 – sends DB error to user res.status(500).end(); // Option 2 – just notifies there was a problem throw err; // Option 3 – stops the server completely } else res.status(200).json(account); }); 我应该select哪一个?

无法将表单数据提取到mongoDB

这是我的app.js: var express = require("express"), mongo = require("mongodb"), db = require("monk")("localhost:27017/nodemails"), bodyParser = require("body-parser"), logger = require("morgan"), path = require("path"); var app = express(); var router = express.Router(); var port = 3000; app.use(router); app.use(express.static(__dirname, "public")); app.use(logger("dev")); router.use(bodyParser.urlencoded({extended: true})); router.use(bodyParser.json()); // Connect my DB here app.use(function (req,res,next) { req.db = db; next(); }); // Catch 404 […]

PassportJS本地策略不工作Withh MongoDB

我试图得到与PassportJS用户身份validation的处理,我不能让我的数据库设置工作。 我在没有 Mongoose的情况下使用MongoDB,我无法使LocalStrategy模块工作。 希望我的数据库查询不是太麻烦阅读。 本地策略: passport.use(new LocalStrategy( function(username, password, done) { //Fire up database mongo.connect("mongodb://localhost:27017/formulas", function(e, db) { if (e) {return next(e);} var col = db.collection("users"); //Do a database query to find a record by username col.findOne({"username": username}, function(err, user){ if (err) { return done(err);} if(!user) { return done(null, false, { message: "Please check your […]

将$ geoNear与另一个集合结合

我有2个collections, resto和meal (每个餐文件有它所属的resto id)。 我想要取得至less有一顿饭的附近的restos 。 现在,我可以去附近的餐馆,但我怎样才能确保他们至less有一顿饭? restoModel.aggregate([{ "$geoNear": { "near": { "type": "Point", "coordinates": coordinates }, "minDistance": 0, "maxDistance": 1000, "distanceField": "distance", "spherical": true, "limit": 10 // fetch 10 restos at a time } }]); 示例resto文档: { _id: "100", location: { coordinates: [ -63, 42 ], type: "Point" }, name: "Burger King" } Sample […]

使用$或$ elemMatch和条件以外的数组

我的基本结构是我有一个会话对象的用户对象,其中包含一个subjectId和小时价格。 User{ defaultHourly: Number, subjects{ [ id: String, hourly: Number ] } } 我使用elemMatch像这样: query.elemMatch("subjects", { "id": { $in: subjects }, "$or": [ { "hourly": { $eq: null } }, // this is my issue { "$and": [ { "hourly": { $ne: null } }, { "hourly": { $gte: price.low, $lte: price.high } } ] […]

在json中返回多个来自查询的结果

有人可以告诉我怎么可以从这个查询,count()和产品列表中的一个结果? 因为在这一刻它只返回我有限的数组,我想所有产品的count()没有限制: 数组[对象,对象,对象,对象,对象] router.get('/products', function (req, res) { var size = parseInt(req.query.pageSize); if (req.query.pageNumber == 1) { var page = 0; } else { var page = parseInt(req.query.pageNumber) * req.query.pageSize – req.query.pageSize; } Product.count() .exec(function (err, products) { if (err) { res.status(404).json({ message: 'Can not download this list' }) } else { Product.find().skip(page).limit(size) .exec(function (err, […]

mongodb将parameter passing给集合查找

我正在尝试将函数的parameter passing给mongodb集合查找。 喜欢这个: async find() { try { return await db.collection('users').find.apply(null, arguments); } catch(err) { console.error(err); } } 它返回 TypeError: Cannot read property 's' of null at Collection.find (/localpath/node_modules/mongodb/lib/collection.js:282:22) 我可以跑 await db.collection('users').find() 游标正在返回。 所以连接和收集都正确设置。 我不在这里?