Articles of mongoose

跳过时间戳中间件在Mongoose中的某些更新

我的应用程序使用Mongoose,并有一个使用时间戳选项的模式: var fooSchema = new Schema({ name: String, }, { timestamps: true, }); mongoose.model('Foo', fooSchema); 所以,无论何时将更新写入集合, updatedAt属性都会更改为当前date。 但是现在我想添加一些不应该更新updatedAt属性的更改。 一些Stackoverflow( 示例 )的答案build议使用Foo.collection作为涉嫌访问本地MongoDB驱动程序。 所以我试过这个: Foo.collection.update({ _id: someFooId }, { $set: { name: 'New Name' } }); 但是,那也改变了updatedAt属性。 那么如何更新文档, 而不更改updatedAt ?

mongoose迁徙

任何人有一个迁移模块,他们使用mongoose插件迁移mongodb数据? 我目前正在使用“迁移”模块,除了事实上我需要在每个向上/向下创build/销毁我的连接。 IE // Setup mongoose var mongoose = require('mongoose') , Role = require('../models/role') , User = require('../models/user'); exports.up = function(next) { // get a brand new connection for this patch. mongoose.connect('mongodb://localhost/sagedb'); var adminUser = { username: 'admin', password: 'admin' }; User.createUser(adminUser, function(err, user) { if (err) { mongoose.disconnect(); // Make sure to close connection […]

graphQL – types必须是输出types

我正在尝试使用express和mongoose graffiti来设置graphQL路由。 但是,我得到以下错误: Error: myColl.myField field type must be Output Type but got: undefined. at invariant (/Users/nha/…/node_modules/graphql/jsutils/invariant.js:20:11) at /Users/nha/…/node_modules/graphql/type/definition.js:299:39 在type : Schema.Types.ObjectId模式中,types是: type : Schema.Types.ObjectId 。 是否应该改变其他的东西? 我应该注意的版本是: "@risingstack/graffiti": "^1.0.2" "@risingstack/graffiti-mongoose": "^3.1.1" "mongoose": "~3.6.20"

如何使用条纹webhooks更新用户的订阅date?

我在node.js中构build了一个订阅计划,我阅读了关于如何订阅用户到计划的文档,并且成功了。 Stripe的文档声明我必须在数据库中存储一个active_until字段。 它说什么时候改变使用webhook,我知道webhook就像一个事件。 真正的问题是 1)如何使用active_until每月重复帐单? 2)我如何使用webhook,我真的不明白。 这是迄今为止的代码。 var User = new mongoose.Schema({email:String,stripe:{customerId:String,plan:String} }); //payment route router.post('/billing/:plan_name', function(req, res, next) { var plan = req.params.plan_name; var stripeToken = req.body.stripeToken; console.log(stripeToken); if (!stripeToken) { req.flash('errors', { msg: 'Please provide a valid card.' }); return res.redirect('/awesome'); } User.findById({ _id: req.user._id}, function(err, user) { if (err) return next(err); stripe.customers.create({ […]

Mongoose select:false不适用于位置嵌套对象

我希望我的模式的location字段默认隐藏。 我添加了select: false属性,但在select文档时总是返回… var userSchema = new mongoose.Schema({ cellphone: { type: String, required: true, unique: true, }, location: { 'type': { type: String, required: true, enum: ['Point', 'LineString', 'Polygon'], default: 'Point' }, coordinates: [Number], select: false, <– here }, }); userSchema.index({location: '2dsphere'}); 打电话时: User.find({ }, function(err, result){ console.log(result[0]); }); 输出是: { cellphone: '+33656565656', location: { […]

Mongoose高级自定义模式对象types

在Mongoose> = 4.4中,找不到涉及自定义对象(或值对象 )的高级 自定义模式types的任何示例。 想象一下,我想要使用一个自定义types,如: function Polygon(c) { this.bounds = [ /* some data */ ]; this.npoints = /* … */ /* … initialize polygon … */ }; Polygon.prototype.area = function surfaceArea() { /**/ }; Polygon.prototype.toObject = function toObject() { return this.bounds; }; 接下来,我实现了一个自定义的SchemaType,如: function PolygonType(key, options) { mongoose.SchemaType.call(this, key, options, 'PolygonType'); } PolygonType.prototype […]

即使在捕获之后,Node.js仍然处于未处理状态

我正在使用节点7.2.1与新的asynchronous/等待function。 我也用这样的mongoose使用本地ES6诺言 – const mongoose = require('mongoose'); mongoose.Promise = global.Promise; 我的代码stream是这样的 – async function getFollowers(){ try { const followers = await User.getFollowersFromMongo(req.params.userId); res.send(followers); } catch (err) { winston.error('Printing Error = ', err); res.status(400).send({success: false, error: err}); } } UserSchema.statics.getFollowersFromMongo = async(userId) => { try { let aggregateQuery = []; //some syntactical error in mongo query […]

用Mongoose增加MongoDB集合中的一个字段

我试图通过Mongoose在我的MongoDB数据库集合中增加一个值。 这是在Mongoose网站上显示的演示代码: var conditions = { name: 'borne' } , update = { $inc: { visits: 1 }} , options = { multi: true }; Model.update(conditions, update, options, callback) 我有这样的东西: var conditions = { "uniqueId" : itemId }; var update; if(increase) update = {$inc : {inStock : 1}}; else update = {$dec : {inStock : […]

你可以在Mongoose中定义子文档的实例方法吗?

如果我在Mongoose中有一个Schema,它的定义如下: var subSchema = new Schema({ some: String }); var topSchema = new Schema({ subs: [subSchema] }); var topModel = mongoose.model("Top", topSchema); 有没有可能为子文档定义一个实例方法? 我已经尝试了以下(在模型声明之前添加),但它不起作用: subSchema.methods.someFn = function() { return 'blah'; };

用mongoose保存图像

我知道在这个话题上已经有不less线索了,但不幸的是,直到现在我还没有find答案。 我使用来自http://angular-js.in/image-upload/的示例代码中的angular.js从客户端获取图像。 这部分工作 现在到节点/ mongodb部分,这里是我的后端模型: var userSchema = new mongoose.Schema({ avatar: { data: Buffer, contentType: String }, // … }); module.exports = mongoose.model('User', userSchema); 和我的节点代码: exports.createAvatar = function (req, res) { var avatar = { data: req.body.data.image, // see below contentType:'image/png' } models.DUser .findById(index.findUserId(req)) .exec( function (err, user) { user.avatar = avatar; // … user.save(function […]