Tag: mongodb

当我尝试将对象推送到MongoDB和Nodejs中的数组时,为什么会出现castError?

我有一个mongoDB,我试图让一个Nodejs服务器来操纵数据库中的数据。 当我尝试将评论推送到BlogPost对象中的Comments数组时,我得到了一个castError。 下面的源代码,请告诉我,如果你错过了重要的信息。 提前致谢! 路线: routes.post('/comments/push/:id', function(req, res) { const blogPostId = req.param('id'); const commentProps = req.body; BlogPost.findById(blogPostId) .then((blogPost) => { blogPost.comments.push(commentProps); return blogPost.save(); }) .then((blogPost) => res.status(200).json({ 'status': 'Comment is deleted.', 'comment': blogPost })) .catch((error) => res.status(400).json(error)) }); BlogPost架构: const BlogPostSchema = new Schema({ content: { type: String, validate: { validator: (content) => content.length […]

后的参数没有存储在Mongo数据库中

我试图用一个MEAN堆栈来构build一个简单的博客,而且我正在设置后端。 我正在用邮递员testing我的路线,出于某种原因,我无法将post的标题和正文保存在数据库中。 我的模型: models/posts/db.js var mongoose = require('mongoose'); var Schema = mongoose.Schema; var PostSchema = new Schema ({ title: { type: String }, body: { type: String }, date: { type: Date, default: Date.now } }); module.exports = mongoose.model('Post', PostSchema); 我的控制器: controllers/posts.index.js var base = process.env.PWD; var Post = require(base + '/models/posts/db.js') var createPost = […]

Mongoose在嵌套的对象数组中推送多个唯一值

我试图在嵌套的对象数组中推入多个值,如下所示: Schema.update( { _id: req.params.id}, { $push: { content: { $each: req.body } } } 作为req.body这样的东西: req.body = [{id: 1, name: 'foo'},{id: 2, name: 'bar'}] 确保它们中没有一个已经存在,有任何方法可以将$ ne属性用于多个子元素? 提前致谢。

MongoDB连接string是否需要ReplicaSet中每个服务器的身份validation详细信息?

我们发现我们的中学在主要故障之后没有正确authentication。 我们有两个MongoDB服务器(v3.4)都正确设置在一个复制数据库中: mongo1:27017 mongo2:27017 而我们的连接string(Node.js的MongoDB驱动程序v2.2.19)就是这样的: mongodb://username:password@mongo1,mongo2/db?replicaSet=rs0 现在,我们的主要失败和中学, mongo2当选小学。 但是,DB调用失败,出现“未授权”错误。 所以我再看看MongoDB文档: mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]] 它看起来不明确,每个主机是否需要username:password ? 但是这很奇怪,因为它们都被复制,所以用户应该是相同的,对吗? 我什至尝试过,在应用程序中使用此连接string: mongodb://username:password@mongo1,username:password@mongo2/db?replicaSet=rs0 但是,失败: Error: Username with password containing an unescaped colon 用户名和密码是字母数字的,所以这个样式URI似乎有一个parsing问题。 但是与原来的,它没有正确authentication。 所以这些问题似乎彼此不一致。 我已经在独立模式下validation用户是否存在于两台服务器上,并具有适当的权限。 所以我不确定问题在哪里。 我发现另一个非常类似的问题与不同的驱动程序,但没有答案:(

reddit评论系统如何在mongodb / nodejs中复制

如何在MongoDB / mongoose中创build嵌套的评论回复,以便像在reddit嵌套中一样创build评论系统。 这是我迄今创build的模式: var CommentSchema = Schema({ body: {type: String}, chapterId: {type: RK, ref: 'Chapter'}, by: {type: RK, ref: 'User'}, }, {timestamps: true}); var UserSchema = new Schema({ name: String, username: {type:String, unique: true}, profile_pic: String, password: String, role:{type: [{ type: String, enum: ['user', 'admin'] }], default: ['user'] } });

Node / Express API,使用JWT令牌的电子邮件validation,意外的行为

一种奇怪的问题。 我正在构build一个NodeJS /快速API使用JSON Web令牌用户的电子邮件validation。 下面是用户注册和电子邮件确认路线的代码。 使用以下步骤在Postman中testing这些路由时,一切正常(状态200,用户对象返回):1.发送POST请求以创build用户。 2.使用mongodb shell从新用户获取令牌。 3.在获取请求中使用复制/粘贴令牌来确认路线。 然而,当实际点击通过电子邮件发送的链接时,数据库中的所有更新都是按照它的意思进行的,但是我得到了一个401错误。 即使从电子邮件中的链接复制并粘贴令牌并将其发送给邮递员也具有相同的结果。 路线: app.post('/api/users', (req, res) => { let body = _.pick(req.body, [ 'email', 'password', 'firstName', 'lastName', 'adminRequested' ]); let user = new User(body); user.save().then(() => { return user.generateAuthToken('confirmation', '1h'); }).then((token) => { let currentUrl = req.protocol + '://' + req.get('host') + req.originalUrl; let confirmationUrl = […]

图像不使用MULTER上传

好,所以在我的应用程序,我试图允许图像上传使用MULTER。 我的应用程序是使用node.js构build的,我的数据库使用的是mongodb。 当我创build一个帐户并为头像图片select一个图片时,它会创build一个帐户,但会自动使用我设置的no-image.png文件,以防某人不select图片。 这里是代码…任何帮助将是真棒。 // handle signup logic router.post("/register", function(req, res) { upload(req, res, function(err) { if(err){ req.flash("error", err.message); return res.redirect("/register"); } var newUser = new User({ username: req.body.username, firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, bio: req.body.bio }); if(typeof req.file !== "undefined") { newUser.avatar = '/uploads/userImg/' + req.file.filename; } else { newUser.avatar = '/uploads/userImg/no-image.png'; } […]

如何增加Mongoose中子文档的属性?

我正在使用Mongoose在NodeJS中增加一个对象的子文档的评级。 我将在下面发布模型和路线代码。 当我在Postman中执行查询时,我得到一个空的json对象,并返回一个400错误。 这意味着在查询的某个地方我做错了什么。 blogPost模型 const BlogPostSchema = new Schema({ content: { type: String, validate: { validator: (content) => content.length > 5, message: 'Content must contain at least 6 characters.' }, required: [true, 'Content must be filled in.'] }, rating: Number, title: String, user: { type: Schema.Types.ObjectId, ref: 'user' }, board: {type: Schema.Types.ObjectId, ref: 'board'}, […]

mongoose保存一个电话的4个文件

我有一些使用mongoose在MongoDB中保存数据的问题。 这是我使用的代码: var amin = new User({FirstName: "Amin",LastName: "Taghikhani"}); amin.save(function (err, user) { if (err) throw err; user.SayHello(); }); 但是mongoose救4个文件,在我的数据库里我有4个文件 FirstName: Amin, LastName: Taghikhani 谁能帮我为什么mongoose保存4文件? 谢谢你的答案。

node.js&mongodb,当数据快速增长时,如何devise一个数据存档。

目前我devise的平台,每天都会有大量的数据存储在数据库中,但是这些信息只能在三天到一周之内使用,这些信息只能用于以后的查询。 这些大量的信息将导致数据库效率的降低。 我目前的想法是定期提交数据到另一个数据库。这个数据库将被专门用作查询。 我如何devise它? 假设我每月提取一次,如何从mongodb获取本月的数据并将其转储到另一个存储库。