Tag: mongoose

节点js把架构放在其他文件夹中

我已经创build了基本的节点项目,我在模型文件夹内创build模型文件夹,我有模式文件夹和index.js 在架构文件夹中有我的项目的所有架构和在index.js我写这样的事情 var s1 = require('./schema/schema1'); var s2 = require('./schema/schema2'); module.export = function(app) { schema1= s1 ; schema2= s2 ; } 并在控制器文件即时访问模型像这样 var model = require('./models/'); model.schema1.find(function(err, data) { }) 但上面的代码不工作,它给我的错误TypeError: Cannot read property 'find' of undefined但是当我在控制器中尝试这样的事情 var schema1= require('../models/schema/schema1'); schema1.find(function(err,data){}); 其工作正常,但我想在我的项目中使用mongoose,快车,节点,mongodb第一个结构。 请帮助我不知道我做错了什么

带有byId()的NodeJS额外字段;

目前我正在研究一个nodeJS API,我有一个模型,而且这个模型可以包含媒体项目,就像你在我的代码中看到的那样: router.get('/:id', function(req, res, next) { qbuilder.byId(Model,req) .exec( function(err,model){ Media.count({'model.entity': model._id}, function(err, media){ if(media){ console.log(media); } }); model.total_media = 15; responders.sendJsonOrError(err, res, model, next); }); }); 问题是,该代码: model.total_media = 15; 没有出现在响应者中,这很奇怪,因为如果我用下面的方法清理对象:model = []; 它返回空。 一旦我添加lean()到我的查询,它会返回total_media响应者,但是当我这样做时,我得到的问题是: router.get('/:id', function(req, res, next) { qbuilder.byId(Model,req) .exec( function(err,model){ Media.count({'model.entity': model._id}, function(err, media){ if(media){ model.total_media = media; } }); responders.sendJsonOrError(err, […]

mapReduce使用node.js和mongoose

我正在设法计算每个地区的学生人数。 我有一个模型 ,看起来像 var mongoose = require('mongoose'); var schema = mongoose.Schema; var studentSchema = new mongoose.Schema( { "name":String, "address" :{ "locality":String } }); module.exports = mongoose.model('Student', studentSchema); 然后我有一些Node.js代码 var Student = require('../../../models/Student'); module.exports.getStudentsBasedOnLocality = function(){ var o = {}; o.map = function () { emit(Student.address.locality, 1) } o.reduce = function (k, vals) { return vals.length […]

Dust.js使用Mongoosestream式传输视图

我有一个简单的应用程序,使用快递和霍夫曼视图引擎,以stream我的看法。 我目前正在试图扩展由官方Dust.js仓库提供的一个例子 。 不幸的是,我不能使用Mongoose进行数据检索。 app.js var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'dust'); app.engine('dust', hoffman.__express()); app.use(hoffman.stream); app.get('/', function (req, res) { res.stream("hello", { "test": function(chunk, context, bodies, params) { //This works as expected //return [{name:"This is a name"},{name:"This is another name"}]; return model.find().lean().exec(function(err, docs) { return docs; }); }, "test1": function(chunk, context, bodies, […]

如何使用Mongoose从另一个虚拟内部访问虚拟属性

我有一个发票模型,使用虚拟属性来计算税,小计,总计等值。我有的问题是,一些虚拟属性需要能够引用其他虚拟属性。 例如,这里是发票的Mongoose模式: var InvoiceSchema = Schema({ number: String, customer: {ref:String, email:String}, invoiceDate: {type: Date, default: Date.now}, dueDate: {type: Date, default: Date.now}, memo: String, message: String, taxRate: {type:Number, default:0}, discount: { value: {type:Number, default:0}, percent: {type:Number, default:0} }, items: [ItemSchema], payment: {type: Schema.Types.ObjectId, ref: 'Payment'} }); InvoiceSchema.virtual('tax').get(function(){ var tax = 0; for (var ndx=0; ndx<this.items.length; ndx++) […]

无法在mongodb中更新文件(想要在数组中推入项目)

起初我为我的英语道歉:( 即时通讯新的nodeJs和mongodb和我有一个问题 我不能添加任何项目数组 这是我试过的: db.conversations.update({userID: memberID} ,{ "user_users" : { $push : { "member": userID } // this does not work :(( } }); 我也试过这个: db.conversations.user_users = { $push : { member: memberID } }; db.conversations.save(); 我想这样工作: { "_id" : conversationID, "userID" : userID, "user_users" : { "member" : memberID, "member" : memberID } }

返回单个响应中的mongoose错误列表

我目前正在使用Node.js,Mongoose和Express.js后端开发。 这是我尝试使用mongoose创build的用户列表。 [ { "username" : "abc", "password" : "123", "displayname" : "ABC", "email" : "test@example.com" }, { "username" : "def", "password" : "123", "displayname" : "DEF", "email" : "test2@example.com" }, { "username" : "ghi", "password" : "123", "displayname" : "GHI", "email" : "test@example.com" } ] 这是我目前在后台做的。 我设置的用户名字段是unique ,mongoose会返回错误,如果其中一个用户名已经存在。 var lists = req.body; lists.forEach(function(list) { […]

Promise问题:使用Q.nfcall()调用mongoose.findOne()

我有下面的代码,其中mongoose的findOne方法使用Q.promise包装: // _getById should be returning a Promise var _getById = function(id) { return Q.Promise(function(resolve, reject) { ApplicationModel.findOne({ _id: id, 'metadata.isDisabled': false }, '-metadata', function(err, application) { if (err) { return reject(err); } if (!application) { return reject(new CustomError('Not found', 404)); } resolve(application); }); }); } 我正在尝试使用Q.nfcall方法重构该代码,这是我到目前为止: var _getById = function(id) { var searchOptions = […]

在推入数组时向上插入文档

我有以下架构: var TestSchema = db.Schema({ name: { type: String, required: true, unique: true } data: [] }, { strict: false }); var Test = db.model('Test', TestSchema); 注意这是strict: false 。 我想能够upsert新的文件。 问题是,我不希望data数组被覆盖,而是要将新的文档推入其中。 例如,假设这是一个现有的文件: { name: "hello world", data: [ { one: '123', two: '456' } ] } 我想upsert这一点: { name: "hello world", new_field: "to be updated" […]

如何获取MongoDB中的特定字段只有没有键的值?

我的数据集如下: { "_id" : "EVNQUERY-k9Uoo74Q3WcdmU", "event_data" : "{\"data\":\"helo\"}", "event_name" : "onOemPushAlert", "timestamp_start" : 1452678481433, "timestamp_end" : 1452678481433, "sender" : "USR-ADMIN", "status" : "pending", "query" : { "user" : { "and" : [ { "email" : { "eq" : "" } } ] } }, "updated_on" : ISODate("2016-01-13T09:48:01.459Z"), "created_on" : ISODate("2016-01-13T09:48:01.459Z") } { "_id" : "EVNQUERY-yAKmrbzs2JeaUY", […]