Tag: mongoose

在自定义静态创build中包装Model.create

我想在我自己的静态创build方法中包装Mongoose Model.create方法: // File: Task.js var mongoose = require('mongoose'); var Schema = mongoose.Schema; var taskSchema = mongoose.Schema({ name: String }); // Custom static create method taskSchema.statics.create = function (task) { console.log('CREATING TASK'); return this.model('Task').create(task); // should call Mongoose `create`, not my custom static. }; module.exports = mongoose.model('Task', taskSchema); 用法如下: // Usage: var Task = require('Task.js'); […]

使用Q承诺 – 有没有办法让这个代码重复性较低?

我正在为我的Node.js应用程序启动一个集成testing套件。 我目前正在尝试编写一个设置脚本来擦除testing数据库,并用一些testing数据填充它。 我试图避免可怕的“厄运金字塔” ,我希望使用承诺作为防止我的代码失控的一种方式。 我对承诺很陌生,我仍然试图把自己的头围绕在他们身上 – 可能我没有正确使用它们。 这是我没有承诺的最初版本。 这工作,但嵌套callback了wazoo: var mongoose = require('mongoose'); var User = require('./user'); var MONGODB_URL = process.env.MONGODB_TEST_URL || 'localhost:27017/swot_test'; console.log('\nRunning e2e test preparation script'); console.log('———————————–\n'); console.log('Connecting to database:', MONGODB_URL, '…') mongoose.connect(MONGODB_URL, function () { console.log('Wiping database…') mongoose.connection.db.dropDatabase(function () { console.log('Setting up test user…') User.createUser({ email: 'test@example.com', password: 'tester' }, function (err, […]

“this”在下面的代码中代表“this.model('Animal')”和“this.type”是什么?

嘿,我是新的mongoose和节点。我有点混淆在下面的代码: var animalSchema = new Schema({ name: String, type: String }); animalSchema.methods.findSimilarTypes = function (cb) { return this.model('Animal').find({ type: this.type }, cb); } var Animal = mongoose.model('Animal', animalSchema); var dog = new Animal({ type: 'dog' }); dog.findSimilarTypes(function (err, dogs) { console.log(dogs); }); this实例代表在this.model('Animal')和this.type在下面的代码?

“冻结”mongoose子

我有类似的设置: B.js var schemaB = new mongoose.Schema({ x: Number, … }); module.exports = mongoose.model('B', schemaB); A.js var schemaA = new mongoose.Schema({ b: {type: mongoose.Schema.Types.ObjectId, ref: 'B'}, … }); module.exports = mongoose.model('A', schemaA); 有了这个,我的B文档就可以发生更改,而当我使用populate()检索我的A文档时,这些更改将反映在pathb的对象中。 但是,在某个特定的A文件的pathb上是否有“ 冻结 ”文件? 就像是: var id=1; A.findById(id).populate('b').exec(function(err, a) { if (err) return handleErr(err); console.log(abx); // prints 42 a.freeze('b') // fictitious freeze() fn […]

node.js,mongoose如何在多个ID中查找对象数组

我正在使用Mongoose模块的Node.js并遇到了一个问题。 我有一个Schema,这个模型看起来像这样 _id: '', foo: '', bar: '', fb: [{ id: '' }] 我如何find匹配fb [0] .id加传递一个ID数组中的集合中的所有对象? 这我已经尝试(find()方法与以下查询): {'fb[0].id': {$in: friendsIDList}} 和这个: {'fb': {$in: [{id: friendsIDList}]} } 甚至这个 {'fb': {$in: {$in: friendsIDList}}} 更清楚的是,我有一个用户对象,其中包含FB数据fb参数,但它是一个数组只包含一个对象。 现在我recive一个朋友ID列表,并希望查询所有的用户朋友。 对不起,我的英语btw。

在数组MongoDB中查找内容

我正在用Mongoose使用Mongoose 。 我有这两个模式: var feedSchema = mongoose.Schema({ users: [{ type: Schema.Types.ObjectId, ref: 'User' }] … … }); 和 var userSchema = mongoose.Schema({ email: String, … … }); 我想查找包含user._id在其users字段中的所有提要。 我想知道mongoose是否有这样的东西: Feed .find({ users : { $has : [ user._id ] } }) .exec(function(err, retData) { /* SOMETHING */ }); 我在文档中找不到像这样的东西。 谢谢!

Mongoose findandUpdate文件的多个字段

我正在尝试更新文档的多个字段: Game.findByIdAndUpdate(gameId, { $addToSet: { players: player.id }, $addToSet: { playersInfo: player }, function(err, model){…} } 但是这个查询只执行我最后一个$addToSet

使用Jasmine-Node进行testing时,Mongoose模型自定义函数中消失的值

我试图在我的Mongoose模型上testing我的自定义方法,但是我在testing模型中设置的值消失,并使testing失败。 testing看起来像这样: it('should get the friend id', function(){ var conversation = new Conversation({ 'users': [new ObjectId('0'), new ObjectId('1')] }); expect(conversation.getFriendId('0')).toEqual(new ObjectId('1')); }); 我的模型声明包含这个: var mongoose = require('mongoose'); var ObjectId = mongoose.Schema.Types.ObjectId; var ConversationSchema = new mongoose.Schema({ 'users': [{'type': ObjectId, 'ref': 'User'}] }); ConversationSchema.methods.getFriendId = function(userId) { return this.users; //return this.users[0] === new ObjectId(userId) // ? […]

$ addToSet与子文档的数组

我有以下更新查询: var where = 'answers.round_' + ans.round + '_' + ans.iteration Game.findByIdAndUpdate(gameId, { $addToSet: { where: ans } }, function(err, model) { if (err) throw err console.log('after game update with answer ' + JSON.stringify(model)) callback() }) 数据库结构如下所示: "_id: ObjectId("5304bc1dcf36941e3adcd3fd"), "answers" : { "round_1_1" : [], … } 问题是ans对象没有被推入"round_1_1"数组(不是我检查它不是null )。 callback模型是我想要更新的模型,只是更新不会发生。 我的问题是类似于这个 ,就像点符号不工作(即使在控制台上它输出answers.round_1_1 。

护照mongoose对象#<架构>没有方法“身份validation”,但我可以看到的方法

我遇到了一个没有道理的问题,无法弄清楚希望有人能够提供帮助。 我正在使用几个mongoose插件,现在正试图整合护照。 我已经添加了如下所示的passport-local-mongoose插件,但是我收到了该方法不存在的错误。 将模式logging到控制台时,我可以看到列出的方法,所以我不确定它为什么不存在。 代码示例: var mongoose = require('mongoose'); var timestamps = require('mongoose-timestamp'); var autoIncrement = require('mongoose-auto-increment'); var passport = require('passport'); var passportLocalMongoose = require('passport-local-mongoose'); var BasicStrategy = require('passport-http').BasicStrategy; var usersSchema = new mongoose.Schema({ firstName: String, lastName: String, email: String, organizationId: Number, description: String }); module.exports = function(app,db){ //mongoose setup options usersSchema.plugin(timestamps); usersSchema.plugin(autoIncrement.plugin, { model: […]