Tag: mongodb

Mongoose不重新创build索引集合被丢弃

我知道我应该删除所有文件,而不是删除集合。 但为什么mongoose不会在集合被删除后重新创build索引? 我有一个模式,其中一个领域有unique:true集。 索引是在我启动服务器时创build的。 但是,如果我删除集合,并有新的logging,集合被重新创build和logging插入。 但是,唯一字段的索引不会再次创build。 为什么这样? 我如何要求它重新创build索引?

无法将数据添加到mongoDB中

我正在使用Mongoose来创build一个模式,并尝试通过Postman向mongoDB添加数据,并将数据添加到数据库。 我假设我的问题是数据从浏览器到服务器的parsing方式,这里是我的app.js设置。 什么是添加到数据库 { "_id" : ObjectId("57846282c7b5f51d4c1742a9"), "__v" : 0 } 这是app.js文件 var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var multer = require('multer'); var routes = require('./routes/index'); var mongoose = require('mongoose'); var db = mongoose.connection; mongoose.connect('mongodb://localhost/growlingRabbit'); var Page […]

无法$ push和$使用express js在mongodb中一次设置数据

我有一个场景,我需要replace一个数组中的数据,并在一个查询本身推送另一个数组中的数据。 在这里,我使用快速js框架和mongoose进行查询。 这是我写的查询: exports.candidateRating = function(req, res) { console.log(req.query); Profiles.update({ "name": req.query.name }, { $set: { "ratings": req.body.ratings, } }, { $push: { "RoundWiseRatings": req.body.RoundWiseRatings } }, function(error, profiles) { if (error) { } return res.status(200).json(fnStruncturedData(profiless)); });}; 在这里,我可以设置数据,但无法推送数据。 我不明白我错在哪里。 任何帮助将不胜感激。

Mongoose.js仅在定义/更改时更新单个属性

只有定义属性“头像”,我该如何去改变? update: function(req, res){ Student.findOneAndUpdate({ _id: req.params.id }, { first_name : req.body.first_name, last_name : req.body.last_name, _school : req.body._school, _teacher : req.body._teacher, grade : req.body.grade, language : req.body.language, avatar : avatar, address : req.body.address, city : req.body.city, state : req.body.state, zip : req.body.zip, _guardians : req.body._guardians, updated_at : req.body.updated_at, active : req.body.active }, function(err, student){ if(err) […]

我使用auth0进行用户身份validation,并且我有一个针对CRUDpost(title,img,desc)的API。 如何进行CRUD API的authentication调用?

我正在构build一个反应的应用程序,并login/authentication用户我使用的是auth0。 在我使用auth0之前,我一直在对我的API进行CRUD调用以发布post。 在使用auth0之前以及之前我有用户的情况下,这也是一样。 现在我使用的是auth0,我已经设置好它,把我在MongoDB中的Users集合中的用户插入。 所以,每个用户现在都有一个我将用来关联到职位的id 。 login后,auth0发送一个令牌(我存储在localStorage的),它看起来是这样的: eyJ0eXAiOiJKV1QiLCJhbGviOdJIUzI1NiJ9.eyJpc3MiOiJodHRwczovLzI4MTMzMC5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NTc4M2VjMjlkYmIxMAEwMTAwNTE1M2VmIiwiYXVkIeoiTzE3MGJkNnlnc3lCODkyY295Y25haVhyVkpQZHBUUlgiLCJleHAiOjE0Njw0NjkyMDQsImlhdCI6MTQ4ODDzMzIwNH0.gte9fxVURQGzOWD1ZF8AB-JachZuIkYmux6WKOZ-fdk 这是我的问题 – 我如何对我的CRUD API进行authentication调用? 也就是说,只有login的用户才能进行API调用。 我没有太多的成功find这个主题的教程。

同步机制在本地机器上完美工作,但在Heroku上删除所有video

我有一个启动时运行的机制,将删除任何孤立的数据。 它遍历video和检查的mongodb集合,以确保它可以将db中的logging匹配到磁盘上相应的文件。 如果它发现一个孤儿logging它删除它。 然后翻转目录,确保所有find的文件在db中都有匹配的logging。 当我在本地机器上运行它时,它完美地工作。 但是,每次我部署到heroku和我的dyno重新启动,整个'video'集合被删除。 在Heroku中创buildvideo后,我做了一些基本的testing,它在数据库中,可供下载。 我的GUESS是Heroku不喜欢fs.access的东西。 任何帮助或见解将不胜感激。 walkVideos: function() { // First let's lookup videos and make sure there is a directory for them. If not, delete it from the db. Video.find().exec(function(err, result) { if (err) { console.log(err); return null; } if (result.length === 0) { console.log('No videos found in db'); return null; […]

Mongodb:一次更新同一文档中多个数组的元素

我用$push来更新一个数组的元素。 但是,当我试图更新多个数组的元素保持$push逗号分隔值如下,这是显示一个错误。 它是如何完成的? var conditions = { some condition }; var update = { $push : {Feedback : { Feedbacks:req.body.Feedbacks}}, {Strength : { Strengths:req.body.Strengths}}}; var options = { multi : true}; Model.update(conditions, update, options, callback); 架构是: Model : { Field1 : { type:Number }, Field2: { type : String }, Feedback : { type: Array, […]

摩卡单位testingmongoose模型

我正在努力弄清楚为我的NodeJS应用程序编写这些unit testing的正确(即不是黑客)的方式。 在server.js中,我将mongoose连接到本地主机上运行的数据库:27017。 当我运行我的mochatesting时,我想连接到在localhost:37017上运行的不同 mongoDB实例,以便我不针对活动数据库运行testing。 当我在test.js中需要mongoose并且尝试连接时,mongoose会抛出一个错误,说“尝试打开未closures的连接”。 我已经尝试closurestest.js中的当前连接,但由于某种原因无法正常工作。 我的问题是:什么是正确的方式来连接到一个文件中的testing数据库,但继续让server.js连接到实时数据库? 我的代码如下: // test.js var app = require('../lib/server') // This connects mongoose to a database var assert = require('assert'); var httpstatus = require('http-status'); var superagent = require('superagent'); // Connect to mongoose var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:37017/testDB'); // THIS THROWS ERROR because server.js is connecting to localhost:27017/liveDB // Models […]

REST API不会根据标头中的Passport JWT令牌更改用户?

所以我有一个用Node.JS,MongoDB和Express编写的REST API。 我正在使用护照和passport-jwt使用JSON Web令牌进行身份validation,但是当我为不同的用户帐户使用不同的令牌时,请求每次都保存相同的用户。 这里是routes.js中的身份validation端点: // Authenticate the user and get a JSON Web Token to include in the header of future requests. apiRoutes.post('/authenticate', function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) throw err; if (!user) { res.send({ success: false, message: 'Authentication failed. User not found.' }); } else { // […]

无法在NodeJS中使用Mongoose和Typescript扩展基类

我正在尝试使用Mongoose 4.5.4, 它在使用Typescript(显然)的NodeJS中使用Repository模式进行打样。 RepositoryBase: export class RepositoryBase<T extends mongoose.Document> implements IRead<T>, IWrite<T> { private _model: mongoose.Model<mongoose.Document>; constructor(schemaModel: mongoose.Model<mongoose.Document>) { this._model = schemaModel; } create(item: T): mongoose.Promise<mongoose.model<T>> { return this._model.create(item); } //…… //Additional CRUD methods excluded for brevity } UserRepository: export class UserRepository extends RepositoryBase<IUserModel> { constructor() { super(UserSchema); } } 我从UserRepository调用super()时UserRepository以下types的错误 [ts] Argument of type […]