Articles of mongoose

mongoose连接不起作用

我不知道为什么买时,我做了mongoose连接什么都没有发生… 这是我的代码: const app = express(); const port = 8080; const bodyParser = require('body-parser'); var mongoose = require('mongoose'); app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json()) require('./routes/routes.js')(app); //load routes app.listen(port, function () { console.log('Example app listening on port ' + port); }); mongoose.connect('mongodb://localhost/Prueba', function(err) { if (err){ console.log("DB NOT CONNECTED ERROR: " + err); }else{ […]

如何安全地更新共享的MongoDB实例?

我想了解如何在应用程序启动过程中build立我认为需要成为Mongo数据库上的write-lock 。 我有一个设置,我们有几个(在这个图中只有2个)build立到Mongo副本集的连接的Node API。 在启动时,我希望能够对Mongo运行一些脚本,如果它是旧版本。 例如: MongoDB: v1 schema 节点应用程序: expecting v3 schema 因此,在启动期间,Node App将运行v2Upgrade.js和v3Upgrade.js或类似的。 但是,我想确保只有1节点应用程序可以在任何时候运行此。 所以2个问题: 我以正确的方式思考这个问题吗? 我怎样才能最好地创build某种锁,所以只有一个进程在数据库“准备就绪”之前运行这些更新?

是否有可能为Mongoose SchemaTypes禁用自动types转换?

对于具有此架构的模型… { name: { type: String } } …以下内容自动将提供的值转换为string,而不是强制执行types: document.name = 2; document.validate(err => { // Err is null, document.name === '2' }) 有没有简单的方法来禁用这种行为?

是否有可能使用mongoose直接查询子文档?

假设有一个用户模型和一个Post模型。 在这种情况下,用户会有很多post; 用户将是父母,邮政将是孩子。 是否有可能直接查询post? 例如,如果我想要做类似的事情 app.get('/post/search/:query', (req,res) => { Posts.find({title: req.params.query }, (err,post) => { res.send(JSON.stringify(post)) }) }) 或者必须做: app.get('/post/search/:query',(req,res) => { let resultsFromQuery = []; User.find({'post.title':req.params.query'}, (err,user) => { user.posts.forEach((post) => { if(post.title === req.params.query){ resultsFromQuery.push(post); } }) }) res.send(JSON.stringify(resultsFromQuery)) }) 编辑:这是我的模式。 用户模式(父) const mongoose = require('mongoose'), Schema = mongoose.Schema, PostSchema = require('./post.js'); let […]

mongoose返回函数查询数据库

编辑 我设法做到了。 我用了很棒的asynchronous模块。 以下是解决scheme: async.each(req.body.users, function(userId, next) { User.count( { _id: userId } ).exec(function(err, count) { if(count === null) { next("Doesn't exist); } else { next(); } }, function(err) { if(err) { console.log(err); } else { console.log("success"); } }); 题 我的情况如下。 我正在向db控制器发出一个post请求,以便在db中创build一个文档。 这个请求显然包含来自表单的数据,存储在req.body中。 我想在将数据推送到数据库之前检查数据是否正确,并通过调用函数来检查数据。 其中一个字段是一个user._id的数组,我想检查是否所有这些属于一个用户。 我实施这个的方式如下: req.body.users.forEach(function(userId) { User.count({ _id: userId }).exec(function(err, count) { if(count […]

testingfindOneAndUpdate插入重复预防

您好我有一个节点js代码,使用findOneAndUpdate与Upsert = true创build一个新的MongoDB文档,如果不存在。 我想testing两个asynchronous线程同时调用我的代码,然后它会创build重复。 那甚至有可能testing? 我怎样才能做到这一点。 我是一个初学者在testing。

Mongoose:更新文档中的数组无法正常工作

我试图更新文件中的数组,如果它不存在,添加对象,否则replace数组中的对象。 但是除了$ set参数之外,没有任何东西($ push,$ addToSet)会执行任何操作,并且$ set按预期工作 – 覆盖整个数组。 我的mongoose模式: var cartSchema = mongoose.Schema({ mail: String, items: Array }); 发布请求处理程序: app.post('/addToCart', function(req, res) { var request = req.body; Cart.findOneAndUpdate({ "mail": request.mail }, { $addToSet: { "items": request.item } }, { upsert: true }, function(err, result) { console.log(result); } ); res.send(true); }); 我从客户端发送的数据: { "mail":"test@gmail.com", "item":{ "_id":"59da78db7e9e0433280578ec", […]

mongoose得到最高的价值的关键

这是我的模式 var schema = new mongoose.Schema({ key: String, value: Number }, { timestamps: true }); 我有这样的条目(我收集不同的统计) var entry1 = { key: "subscribers", value: 100 } var entry2 = { key: "online", value: 105 } 我试图得到每个关键所有时间的高价值。 现在我有这个: var now = new Date(); var startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate()); db.getConnection().model("MaxValue").aggregate([{ "$match": { createdAt: { $gte: startOfToday […]

删除多个参考

我有一个关于删除多个引用的问题。 我有3个模式模型 – >事件,发布和评论。 事件存储对post(一对多)的引用以及对商店引用的注释(一对多)。 事件模式 const mongoose = require('mongoose'), Schema = mongoose.Schema, ObjectId = mongoose.Schema.Types.ObjectId; const EventSchema = new Schema({ organizer: { type: ObjectId, required: true, }, date: { start: { type: Date, required: true, }, end: { type: Date, required: true, }, }, name: { type: String, required: true, }, description: { type: […]

mongoose赛跑情况导致错误

我在我的客户端中实现了最喜欢/不喜欢的function,许多快速请求导致错误的结果,可能是由于竞争条件。 会发生什么事,那个用户发送一个请求到最喜欢的post,然后,非常不合适,但不正确的请求解决更快,并导致Unhandled promise rejection (rejection id: 1): VersionError: No matching document found 。 所以我的问题是如何避免这种情况? 是否有可能确保最喜欢的解决scheme? 谢谢! const UserSchema = new mongoose.Schema({ favorites: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }] }) UserSchema.methods.favorite = function(id) { if (this.favorites.indexOf(id) === -1) { this.favorites.push(id); } return this.save(); }; UserSchema.methods.unfavorite = function(id) { if (this.favorites.indexOf(id) > -1) { this.favorites.remove(id); } return […]