Tag: mongoose

mongoose填充对子文档的引用

我找不到任何回应我的问题。 可能也是一个search问题,但会感谢一些帮助。 我有以下模型: var ChildSchema = new Schema ({ 'name': string }); var ClassSchema = new Schema ({ 'name': string, 'children': [ChildSchema] }); 我只是宣布了一个class的模型。 mongoose.model ('Class', ClassSchema); 然后我有另一个模型: var TeacherSchema = new Schema ({ 'name': string, 'favorite': {type: ObjectId, ref: 'Class.children'} // a child from class children 'least': {type: ObjectId, ref: 'Class.children'} // same as […]

如何在数据库中存储mongoose模式

我正在开发一个特殊的应用程序与明确和mongoose需要build立一个mongoose模式,然后将其存储在数据库中。 我想创build一个项目,人们可以在运行时dynamic创build集合,然后要求其他人通过特殊的forms来填充这些集合 例如,我想存储一个模式,如下面的一个到我的数据库。 我怎样才能做到这一点? var entitySchema = { name : String, num : [Number], time : [Date] } ; 是否有任何特殊的function,将mongoose模式转换为JSON或string? 在架构json上调用toString()函数不起作用,因为它不能解释String或Numbertypes

Mongoose。查找string参数

我有一个函数使用mongoose来查询我的数据库。 连接已经起作用。 但是,如果我不使用实际的string,而是stringvariables,那么.find返回一个未定义的对象(即没有find任何东西)。 这里是代码: function getUser(obj, callback){ console.log("obj.key: " + obj.key[0].toString() + ":" + obj.value[0].toString()); var first = "name.first"; console.log("first: " + first); var second = "nicholas"; console.log("second: " + second); User.findOne({first:second}, 'name telephone address1 address2 city state zip country', function(err, user){//nothing can be found when not directly using a string!!! console.log("got this user: " […]

Mongoose返回Mongo对象,但不能访问它的属性

在我简单的Node / Mongo / Mongoose设置中,我有一个函数调用服务器来查看当前使用的最高ID,并返回下一个ID。 这个函数作为一个callback函数来创build一个新的Game 。 奇怪: logger.log出现在输出下面 result { _id: 555d83d5bb0d4e3c352d896f, gameId: 'NaN' } 但是当我改变logging器 logger.log("result", result.gameId); 输出是 result { _id: 555d83d5bb0d4e3c352d896f, gameId: 'NaN' } 这是没有意义的。 显然,财产在那里! 这是我的代码 var createGame = function(gameNickname, callback){ nextGameId(function(nextId){ var newgame = new models.Game({ "gameId": Number(nextId), "gameNickname": gameNickname }); newgame.save(function(result, game){ callback(result + nextId); }); }); }; var […]

我如何使用Mocha和伊斯坦布尔编写出色的testing用例?

我正在尝试使用chai和Mocha为Mongoose模型函数编写unit testing用例。 模型function function getDetails(parameter, fn) { Model.findOne({ parameter: parameter }) .lean() .exec(function(err, document) { if (err) { return fn(err, null); } return fn(err, document); }); }; unit testing用例 describe('→ Database model functions.', function() { it('getDetails() – should fetch and return details from database', function(done) { model.getDetails(parameter, function(err, document) { expect(err).to.be.null; expect(document).not.to.be.null; expect(document).to.be.an('object'); done(); }); […]

根据子文档值searchmongodb文档

我正在使用mongoosejs,并为用户使用如下的MongoDB模式: { "_id" : ObjectId("my local id"), "gravatar" : "user gravatar", "username" : "users username", "displayName" : "Shivaraman I", "provider" : "facebook", "providerData" : { "accessToken" : "facebook access token", "work" : [ user work history ], "verified" : true, "updated_time" : "2015-02-04T13:23:44+0000", "timezone" : 1, "name" : "Shivaraman Iyer", "locale" : "en_GB", "link" : […]

如何使用mongoose使用MongoDB findOne()

我有使用MongoDB findOne()函数与mongoose的麻烦。 调节器 exports.show = function (req, res) { Fahrt.load(req.params.fahrtenId, function (err, fahrt) { res.jsonp(fahrt); }); }; 模型 FahrtSchema.statics = { load: function (id, cb) { this.findOne({ _id: id } ).exec(cb); }}; 路线 router.get('/:fahrtId', fahrtenController.show); app.js app.use('/fahrten', fahrten); 当我使用Postman查询具有特定ID的“Fahrt”对象时,我会返回“null”。 当我通过Mongo Console直接search时 db.Fahrt.findOne({"_id": ObjectId("5562ca06a14c4924090ba5ff")}) 我得到一个现有的对象,一切都如预期。 但为什么不当我通过mongoose查询?

在包含对象数组的mongoose中过滤子文档

我试图返回给定用户的评级列表,按类别过滤。 var UserSchema = new Schema({ … ratings: [{ item: { type: Schema.Types.ObjectId, ref: 'Items' }, category: String, rating: Number }] 如果我做了以下,我只得到这个类别的第一个评级: var query = User.findOne(userId, 'ratings'); query.select({ 'ratings': { $elemMatch: { 'category': req.query.category }}}); 以下也只返回第一个评价: var query = User.find(); query.where({'_id': userId, 'ratings.category': req.query.category}); query.select({ 'ratings.$': 1 }); 我能够汇总正确的结果与以下,但是,我不认为这将工作,因为我不能在聚合后填充。 var query = User.aggregate( { $match: […]

为什么我似乎不能将普通对象合并到Mongo文档中?

我有一个来自第三方服务器的数据馈送,我正在将其转换为JSON。 数据馈送将永远不会有我的mongoDB的自动生成的_id s,但有一个唯一的标识符vehicle_id 。 下面的函数是处理如果存在具有相同vehicle_id的mongo文档,那么处理数据馈送生成的json对象fresh_event_obj并将其值复制到mongo文档中。 function update_vehicle(fresh_event_obj) { console.log("Updating Vehicle " + fresh_event_obj.vehicleID + "…"); Vehicle.find({ vehicleID: fresh_event_obj.vehicleID }, function (err, event_obj) { if (err) { handle_error(err); } else { var updated = _.merge(event_obj[0], fresh_event_obj); updated.save(function (err) { if (err) { handle_error(err) } else { console.log("Vehicle Updated"); } }); } }); } event_obj[0]和fresh_event_obj的结构是相同的,除了event_obj[0]具有_id和__v而“普通”对象没有。 当我运行_.merge这两个,甚至我自己的recursion函数,只是将值从后者复制到前者,尽pipefresh_event_obj具有所有新值,但updated对象中没有任何内容与event_obj[0]不同。 有没有人有任何想法我做错了? […]

如何正确使用与Node.js Mongoose模型?

我试图用mongoose来控制我的数据库逻辑和交易。 我已经有了Schema定义,我正在导出这些模型。 不pipe怎样,当我尝试使用一个模型,它会失败,像一个消息: return mongoose.model('Report', reportSchema); } has no method 'find' return mongoose.model('Report', reportSchema); } has no method 'find' … 这是我的模型导出: module.exports = (function() { var mongoose = require('mongoose'), Schema = mongoose.Schema, ObjectId = Schema.ObjectId; var reportSchema = mongoose.Schema({ category: ObjectId, authorName: String, authorEmail: String, text: String, address: String, coordinates: { type: "Point", coordinates: [Number,Number] […]