不知道我做错了什么,这是我的check.js var db = mongoose.createConnection('localhost', 'event-db'); db.on('error', console.error.bind(console, 'connection error:')); var a1= db.once('open',function(){ var user = mongoose.model('users',{ name:String, email:String, password:String, phone:Number, _enabled:Boolean }); user.find({},{},function (err, users) { mongoose.connection.close(); console.log("Username supplied"+username); //doSomethingHere }) }); 这里是我的insert.js var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/event-db') var user = mongoose.model('users',{ name:String, email:String, password: String, phone:Number, _enabled:Boolean }); var new_user = new user({ […]
我知道如何… 删除单个文档。 删除集合本身。 使用Mongo从集合中删除所有文档。 但是我不知道如何使用Mongoose从集合中删除所有文档。 我想在用户点击一个button时这样做。 我假设我需要发送一个AJAX请求到一些端点,并让端点去除,但我不知道如何处理在端点的删除。 在我的例子中,我有一个Datetime集合,并且当用户点击一个button时,我想删除所有的文档。 API /date/ index.js 'use strict'; var express = require('express'); var controller = require('./datetime.controller'); var router = express.Router(); router.get('/', controller.index); router.get('/:id', controller.show); router.post('/', controller.create); router.put('/:id', controller.update); router.patch('/:id', controller.update); router.delete('/:id', controller.destroy); module.exports = router; API /date/ datetime.controller.js 'use strict'; var _ = require('lodash'); var Datetime = require('./datetime.model'); // Get […]
我正在学习平均堆栈,当我尝试启动服务器使用 npm start 我得到一个exception说: schema hasn't been registered for model 'Post'. Use mongoose.model(name, schema) 这里是我的代码/models/Posts.js var mongoose = require('mongoose'); var PostSchema = new mongoose.Schema({ title: String, link: String, upvotes: { type: Number, default: 0 }, comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }] }); mongoose.model('Post', PostSchema); 因为我可以看到模式应该注册为模型'Post',但是可能导致exception被抛出的原因是什么? 提前致谢。 编辑:这是exception错误 /home/arash/Documents/projects/personal/flapper-news/node_modules/mongoose/lib/index.js:323 throw new mongoose.Error.MissingSchemaError(name); ^ MissingSchemaError: Schema […]
有没有办法更新对象的值? { _id: 1, name: 'John Smith', items: [{ id: 1, name: 'item 1', value: 'one' },{ id: 2, name: 'item 2', value: 'two' }] } 比方说,我想更新项目的名称和价值项目,其中id = 2; 我已经尝试过以下瓦特/mongoose: var update = {name: 'updated item2', value: 'two updated'}; Person.update({'items.id': 2}, {'$set': {'items.$': update}}, function(err) { … 这种方法的问题是它更新/设置整个对象,因此在这种情况下我失去了id字段。 有没有更好的方法mongoose在数组中设置某些值,但留下其他值单独? 我也曾问过这个人: Person.find({…}, function(err, person) { person.items […]
我这样问,因为当我编写unit testing时,我想放弃testing数据库并插入一些初始化数据,并在testing中检查mongodb中的数据。 所以我需要原始的操作mongodb。 如何在mongoose中做到这一点? 我现在可以做的只是创build连接,而不是在mongoose的官方网站find任何文件。 var mongoose = require('mongoose'); mongoose.connect('mongo://localhost/shuzu_test'); // get the connection var conn = mongoose.connection; 但如何: 删除数据库 创build一个集合 写一些数据到一个集合 查询集合 放下一个集合
我有一个问题,我希望能够获得一个集合的所有独特的城市,我的代码看起来像这样: var mongoose = require("mongoose"), Schema = mongoose.Schema; var PersonSchema = new Schema({ name: String, born_in_city: String }); var Person = mongoose.model('Person', PersonSchema); 在本地MongoDb我可以做db.person.distinct("born_in_city") ,但似乎没有什么等同于Mongoose。 是唯一的select迭代所有的文件,我自己做到这一点,还是有更好的解决scheme? 在尝试使用node-mongodb-nativebuild议的底层node-mongodb-native ,我尝试这样做: mongoose.connection.db.collections(function(err, collections){ collections[0].distinct('born_in_city', function( err, results ){ console.log( err, results ); }); }); 但results是空的,没有错误。 我也希望能够通过名称只获取所需的集合,而不是过滤哪些collections如果可能的话。
有人可以给我一个关于如何使用mongoose的承诺的例子。 这是我所拥有的,但并不像预期的那样工作: app.use(function (req, res, next) { res.local('myStuff', myLib.process(req.path, something)); console.log(res.local('myStuff')); next(); }); 然后在myLib中,我会有这样的东西: exports.process = function ( r, callback ) { var promise = new mongoose.Promise; if(callback) promise.addBack(callback); Content.find( {route : r }, function (err, docs) { promise.resolve.bind(promise)(err, docs); }); return promise; }; 在某些时候,我期待着我的数据出现,但是我怎样才能访问它,或者得到它呢?
我有应用程序使用nodejs和mongodb。 我用mongoose做ODM。 现在我想在整个应用程序中logging所有发生mongoose触发的查询。 如何logging这些?
我有一个问题,我以前没有见过与Mongoose findByIdAndUpdate不返回正确的模型在callback。 代码如下: var id = args._id; var updateObj = {updatedDate: Date.now()}; _.extend(updateObj, args); Model.findByIdAndUpdate(id, updateObj, function(err, model) { if (err) { logger.error(modelString +':edit' + modelString +' – ' + err.message); self.emit('item:failure', 'Failed to edit ' + modelString); return; } self.emit('item:success', model); }); 数据库中的原始文件如下所示: { _id: 1234 descriptors: Array[2], name: 'Test Name 1' } updateObj进入如下所示: […]
我试图用Mongoose发送所有用户的列表,如下所示: server.get('/usersList', function(req, res) { var users = {}; User.find({}, function (err, user) { users[user._id] = user; }); res.send(users); }); 当然, res.send(users); 会发送{} ,这不是我想要的。 有没有find另一种略有不同的语义,我可以做到以下几点? server.get('/usersList', function(req, res) { User.find({}, function (err, users) { res.send(users); }); }); 从本质上讲,我希望只有当所有的用户都从数据库中获取callback才能被执行。