Articles of mongoose

删除使用mongoose返回错误的子文档?

我想删除我的collections的所有子文件。 mongoose模式: //productSchema var pdtSchema = new Schema({ "productId" : {type : String}, "product" : {type : String}, "item no" : {type : String}, }); var shopSchema = new Schema({ "providerId" : {type : String}, "provider" : {type : String}, "products" : [pdtSchema] },{collection:"shopdetails"}); module.exports.Shops = mongoose.model('Shops',shopSchema); module.exports.Products = mongoose.model('Products',pdtSchema); 我已经将大量数据存储在集合中,并且需要删除所有产品(即整个pdtSchema数据)。 码: router.post('/delete',function (req,res) { […]

如何从一个函数中检索并传递来自多个Schema的数据

即时通讯新手在expressjs,并想知道如何检索和通过我的控制器中的多个架构的数据。 这里是假的,假装我想打开add_new_blog页面,下面是路由器; router.get('/add_new_blog', BlogController.index); 那么在BlogController.index我需要检索类别和标签模型。 const Category = require('models/categorySchema'); const Tag = require('models/tagSchema'); module.exports = { index(req, res, next){ Category.find({}); Tag.find({}); // how to find/retrieve data from both Schema then i pass them to Views. res.render('/blog/blogForm'); } } 问题是编码看起来像从两个检索数​​据,然后传递给视图?

MongoDB Node JS – 从文档对象内部的对象中删除一个条目

我正在尝试使用本地mongodb驱动程序在Node JS中创build一个命令,以从文档对象内部的对象中删除键值对。 我有以下格式的mongoDB集合: { "name" : "PrakashPM" "data" : { "Jan-2017" : "2,3,1", "Dec-2016" : "1,2,0", "Nov-2016" : "9,9,9" } }, { "name" : "Valavan" "data" : { "Jan-2017" : "1,1,1", "Dec-2016" : "3,3,3", "Nov-2016" : "9,9,9" } } 我的目标是去除“2016年12月”:“名称”内的“1,2,0”:“PrakashPM” 我的代码: var mongoName = 'PrakashPM'; var mongoDate = "'data'.'Dec-2016'"; // TRIALS // var mongoDate = […]

嵌套mongoose函数完成之前的循环完成

所有,我正在写post函数,其中包括三个嵌套mongoose函数(findOne,findById&创build)的for循环。 但是,看起来function在完成下一个“i”之前还没有完成。 事实certificate,这个代码的console.log永远不会等于5.我已经做了大量的研究,并且明白这个问题是这些mongoose函数是asynchronous的,但是我还没有遇到过这样的问题:有三个嵌套函数,如下所示。 有什么办法可以让循环中的函数完成之前? 谢谢! 为了简单起见,我把i <5,尽pipe这是代码中的一个variables。 此外,让我们假设价格大于卖出是价格。 var quantity = 0; if(price >= sellYesPricesMin){ for (i = 0; i < 5; i ++){ if(price >= sellYesPricesMin && sellYesPricesMin>0){ Order.findOne({"yes_or_no":"NO", "buy_or_sell":"BUY","event.id":req.params.id},function(err, foundOrder){ if(err){ console.log(err); } else { User.findById(foundOrder.author.id, function(err, foundUser){ if(err){ console.log( err); } else { Share.create({}, function (err, newShare) { if (err){ console.log(err); quantity […]

使用ExpressJS环回

我已经研究并实践了用loopback和ExpressJS分别创buildRest Api的方法 使用Loopback时 ; 阅读所有的文档和学习环回特定的东西真的很耗时 它也使你能够在短时间内创build你的Api,并且里面有很多魔法东西。 我看到,如果我在使用环回开发时遇到问题。 我通常会陷入从社区寻找答案。 在使用ExpressJs时 几乎每个API都以相同的格式写入大量复制的代码。 你很舒服,可以轻松做任何事情。 但是与回送相比耗时。 我的意思是利用ExpressJs和Loopback的最好的部分 所以我的问题是“在ExpressJs中使用Loopback并使用Mongoose是否合理?” 与我的问题相关Loopback有一个关于在Loopback应用程序中添加ExpressJS路由的文档。 环回与快速路线 如果有意义的话,是否有文件夹结构的build议?

Mongodb发现数组长度大于指定大小

我有这个Mongoose模型模式 const postSchema = new Schema({ title: String, headline: [{ kind: String, id: Schema.Types.ObjectId, content: String, relevance: Number, _id: false }], }); 我想在headline数组的长度大于x的数据库中查找模型 我有这个查询: const query = { 'headline.kind': 'topic', 'headline.id': topicId, 'headline':{ '$size':{ '$gt': x } } }; 但是当我使用这个我得到: { MongooseError: Cast to number failed for value "{ '$gt': 2 }" at path "headline" […]

mongoose找不到任何结果

我在Mongo和一个相应的mongoose模型简单的收集。 这个集合总是只包含一个文档。 当我在mongoshell中运行一个查询时,它给了我的结果,但是当我试图find一个使用mongoose它根本没有返回任何结果。 有人能帮我弄清楚什么是错的。 以下是我的代码。 模型: const mongoose = require('mongoose'); const schema = new mongoose.Schema({ lastResetMonth: { type: Number }, lastResetWeek: { type: Number }, currentFisYear:{ type: Number } }); module.exports = mongoose.model('ReserveResetTrack', schema, 'reserveResetTrack'); const ReserveResetTrack = require('../models/ReserveResetTrack'); ReserveResetTrack.findOne({}) .then(trackData => { return { lastFisMonth: trackData.lastMonth, lastFisWeek: trackData.lastWeek } }); 上面的代码总是只返回一个承诺。 这是我collections的唯一文件,这将是唯一的永远 { "_id" […]

当我尝试使用工作URL连接到相同的数据库时,Mongoose从不返回其承诺

我有一个本地托pipe的mongodb,我可以使用mongodb.MongoClient连接到。 工作代码: var mongoClient = require("mongodb").MongoClient; … var startApp = function(db) { // Get our collections in an easy to use format var database = { chats: db.collection('chats'), messages: db.collection('messages') }; // Configure our routes require('./app/routes')(app, database); // START APP // Start app on port app.listen(port); // Tell user the app is running console.log("App running […]

更新多个文档并返回所有更新的文档

我正在寻找一种方法来使用mongoose一次更新许多文件,并返回所有修改后的文件。 我尝试在update()中设置multi:true 。 它正在更新所有匹配的文件,但不返回任何。 然后我试着用findOneAndUpdate() 。 即使有许多匹配的文件,它也只是更新和返回一个文件。 是的,函数名称本身告诉,它只会更新一个,我仍然尝试。 我无法在findOneAndUpdate()设置multi:true 。 如何做呢? 提前致谢

为什么我不能访问mongoose模式的方法?

我有一个Nodejs应用程序中的这个Mongoose模式: const mongoose = require('mongoose'), Schema = mongoose.Schema, sodium = require('sodium').api; const UserSchema = new Schema({ username: { type: String, required: true, index: { unique: true } }, salt: { type: String, required: false }, password: { type: String, required: true } }); UserSchema.methods.comparePassword = function(candidatePassword, targetUser) { let saltedCandidate = candidatePassword + targetUser.salt; if […]