Tag: mongoose

Mongoose查询子文档

我有以下计划; 它的一个会话scheme,作为子文档结构的用户名和启用或禁用状态; conversation = {title: "title", users: [{"name: "a", "enabled": true}, {"name: "b", "enabled": false}]} 我想要select启用状态设置为true的所有用户。 我发现在投影$ elemMatch只是这样做,但只返回第一个元素…把$ elemMatch在查询部分不会做任何事情… 任何帮助表示赞赏

使用嵌套模式保存并查找带有参考和承诺的Mongoose文档

我有一个相当简单的问题。 我试图保存一个文档,其模式包括一个嵌套模式引用,该模式引用包括另一个模式引用。 但是,当我去检索该文档时,它不包含(必填)嵌套字段,除非将其填充到相同的查询中。 即使填充查询,但是,第二个嵌套的文档不填充。 我在这里误解了mongoose的工作方式吗? 下面的JavaScript和LiveScript示例代码和输出。 JavaScript的: (function(){ var mongoose, bookSchemaObj, authorSchemaObj, agentSchemaObj, bookSchema, authorSchema, agentSchema, Book, Author, Agent, testBookObj, testAuthorObj, testAgentObj, testAgent, testAuthor, testBook; mongoose = require("mongoose-bird")(require("mongoose")); mongoose.connect("mongodb://test:test@localhost:27017/test"); bookSchemaObj = { author: { type: mongoose.Schema.Types.ObjectId, ref: "Author", required: true }, pubYear: { type: Number } }; authorSchemaObj = { name: { type: String, required: […]

查询API如何获取第三级path的所有数据?

这是目前的架构,我有: var Schema = mongoose.Schema; var ProviderSchema = new Schema({ name: String, abbreviated: String, services: Array, locations: Array, description: String, url: String, upvotes:{type:Number, default:0}, createdOn: { type: Date, default: Date.now}, posts:[{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }] }); 这是后架构: var PostSchema = new mongoose.Schema({ title: String, body: String, upvotes: {type: Number, default:0}, author: String, provider: { […]

AngularJS SPA使用API​​和Mongoose

我正在创build一个简单的AngularJS SPA,使用API​​将数据加载到Mongoose中。 我的应用程序只是添加,显示和编辑成员列表。 它工作时,我只是在我的工厂服务存储在一个数组中的成员,但现在我想改变它通过API挂钩到mongoose。 厂 app.factory('SimpleFactory', ['$http', function($http){ var factory = {}; var members = $http.get('/api/members') factory.getMembers = function () { return members = $http.get('/api/members'); } factory.getMember = function (index) { if (index >=0 && index < members.length ) { return members[index] = $http.get('/api/members/' + member_id ) } return undefined } factory.addMember = function(member) { […]

Get Object没有方法'executeDbCommand'

我在nodejs中使用mongoose 4.0来使用mongodb 3.0.2 当我将mongoose 2.3升级到4.0时,它开始为“executeDbCommand”抛出错误,看起来这是在mongoose 4.0中不推荐使用的,任何人都有更换这个命令的想法吗? 我试图挖掘mongoose,但无法find它,请帮助我,如果有人知道!

API删除function不工作了,不会从数组中删除任何东西?

当我尝试从视图中删除一个post显然表明它被删除。 但是,当我回到供应商路线我可以通过下面的路线find所有以前的数组成员。 但是,当我在/职位的路线不显示我以前删除的成员。 有趣的是,刷新页面后,它不再显示我在我的视图上的logging。 在下面的路线,后消失,而我从命令提示符下尝试: /供应商/ 553b72c9f6d0020425d37f37 /职位 router.get('/providers/:provider/posts', function(req, res) { Provider.findById(req.params.provider).select('posts').populate('posts').exec(function(err, provider) { if(err){ return next(err); } res.json(provider.posts); }); }); 然而,在这条路线,我可以find与9名成员的职位数组。 看来,任何删除不起作用。 router.get('/providers', function(req, res, next) { Provider.find(function(err, providers){ if(err){ return next(err); } res.json(providers); }); }); 这是我在服务器端的删除function: router.delete('/providers/:provider/posts/:post',auth, function(req, res){ console.log("I ma running from server") return Post.findById(req.params.post, function(err, post){ return post.remove(function(err){ if(!err){ Post.update({_id: […]

我可以让Mongoose文档从实例方法中删除自己吗?

标题解释了这一切。 我有一个Mongoose文档,它有一个像这样的实例方法: Model.methods.destroy = function(callback) { // blah blah this.remove(callback); } 我怎么能告诉Model一个实例删除自己? 当我尝试this.remove ,它告诉我 Uncaught TypeError: Object #<EventEmitter> has no method 'remove' 而this.constructor也没有remove 。

mongoose多对一插入

我需要帮忙! 我正在用nodejs和mongo创build一个网站来学习。 我有一个问题,我知道最好的方法来做到这一点。 我有两个集合codes和tag到表codes我有tags字段是tags数组。 CodeModel: var CodeSchema = new Schema({ title: { type: 'String', required: true }, text: { type: 'String', required: true }, url: { type: 'String', required: true }, uri: String, createdAt: { type: Date, default: Date.now }, updatedAt: { type: Date, default: Date.now }, owner: { type: Schema.ObjectId, ref: 'User' }, tags: […]

mongoose更新不立即回电

我确信这只是一个误解,但我无法弄清楚:/ 我正在尝试在一个节点服务器上使用mongoose来更新mongoDB中的一个文档。 我的代码如下所示: Message.update(searchQuery, updateQuery, function(err, response) { if(err) return handleError(err); if(response) console.log(util.inspect(response)); }); 当我第一次调用这个函数时,callback没有执行,也没有对数据库进行修改。 有效地,更新不会发生。 当我第二次调用函数时,第一次调用的callback将返回,第一次更新的更改将应用​​于DB。 第二次通话的回叫不会返回,第二次通话也不会改变。 当我第三次调用它时,callback2返回并且更改2被应用,但不callback和更改3.等等… 我认为这与mongoose函数没有直接执行时没有指定callback,所以我尝试添加一个空的“选项”数组: Message.update(searchQuery, updateQuery, **{}**, function(err, response){…}); 或明确执行更新: Message.update(searchQuery, updateQuery).exec( function(err, response){…}); 结果虽然不变。

mongoose不会更新子文件

几个小时以来,我一直在抨击我的头,似乎无法解决这个问题。 我决定在一个学习项目上使用Mongo,看看我喜欢它。 mongoose是推荐使用它的方式,所以我也是这样做的。 我有两个模式: var PluginSchema = new Schema({ name: { type: String, required: true }, slug: { type: String }, description: { type: String }, created_date: { type: Date, default: Date.now }, active: { type: Boolean, default: true }, user: { type: Schema.Types.ObjectId, ref: 'User' }, versions: [PluginVersion.schema] }); PluginSchema.methods.getLatestVersion = function(callback) { if(this.versions.length […]