标签: mongoose

如何获得猫鼬模型的所有数量?

如何知道数据已保存的模型数?有一种方法Model.count(),但似乎没有用.

var db = mongoose.connect('mongodb://localhost/myApp');
var userSchema = new Schema({name:String,password:String});
userModel =db.model('UserList',userSchema);        
var userCount = userModel.count('name');
Run Code Online (Sandbox Code Playgroud)

userCount是一个对象,哪个方法调用才能得到真实count

谢谢

mongoose mongodb node.js

86
推荐指数
6
解决办法
15万
查看次数

Mongoose findByIdAndUpdate没有返回正确的模型

我有一个问题,我以前没有看到Mongoose findByIdAndUpdate没有在回调中返回正确的模型.

这是代码:

    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);
    });
Run Code Online (Sandbox Code Playgroud)

db中的原始文档如下所示:

{
    _id: 1234
    descriptors: Array[2],
    name: 'Test Name 1'
}
Run Code Online (Sandbox Code Playgroud)

updateObj进入如下:

{
    _id: 1234
    descriptors: Array[2],
    name: 'Test Name 2'
}  
Run Code Online (Sandbox Code Playgroud)

从回调返回的模型与原始模型相同,而不是updatedObj.如果我查询数据库,它已被正确更新.它只是没有从数据库返回.

这感觉就像一个'愚蠢的用户'错误,但我看不到它.任何想法都非常感激.

mongoose mongodb node.js

84
推荐指数
1
解决办法
6万
查看次数

使用Mongoose从MongoDB文档中删除密钥

我正在使用Mongoose Library通过node.js访问MongoDB

有没有办法从文档中删除密钥?即不只是将值设置为null,但删除它?

User.findOne({}, function(err, user){
  //correctly sets the key to null... but it's still present in the document
  user.key_to_delete = null;

  // doesn't seem to have any effect
  delete user.key_to_delete;

  user.save();
});
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js document-database

83
推荐指数
4
解决办法
7万
查看次数

在Mongoose/MongoDB中创建多字段索引

我试图找到关于如何在Mongoosejs中创建多字段索引的文档,但无济于事.特别是我有两个需要索引和唯一的字段.什么是将两个字段索引在一起的示例mongoose模式?

mongoose mongodb

83
推荐指数
2
解决办法
6万
查看次数

保存后,猫鼬会填充

我不能手动或自动填充新保存的对象上的创建者字段...我能找到的唯一方法是重新查询我已经拥有的我不想做的对象.

这是设置:

var userSchema = new mongoose.Schema({   
  name: String,
});
var User = db.model('User', userSchema);

var bookSchema = new mongoose.Schema({
  _creator: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
  description: String,
});
var Book = db.model('Book', bookSchema);
Run Code Online (Sandbox Code Playgroud)

这是我拉我的头发的地方

var user = new User();
user.save(function(err) {
    var book = new Book({
        _creator: user,
    });
    book.save(function(err){
        console.log(book._creator); // is just an object id
        book._creator = user; // still only attaches the object id due to Mongoose magic
        console.log(book._creator); // Again: is just an object …
Run Code Online (Sandbox Code Playgroud)

populate mongoose mongodb node.js

82
推荐指数
6
解决办法
5万
查看次数

如何使用Node.js返回复杂的JSON响应?

使用nodejs和express,我想使用JSON返回一个或多个对象(数组).在下面的代码中,我一次输出一个JSON对象.它有效,但这不是我想要的.由于我有很多对象,因此生成的响应不是有效的JSON响应.

我很清楚我可以简单地将所有对象添加到数组中并在res.end中返回该特定数组.但是,我担心这会对处理和内存密集而变得沉重.

用nodejs实现这个的正确方法是什么?query.each是正确的调用方法吗?

app.get('/users/:email/messages/unread', function(req, res, next) {
    var query = MessageInfo
        .find({ $and: [ { 'email': req.params.email }, { 'hasBeenRead': false } ] });

    res.writeHead(200, { 'Content-Type': 'application/json' });   
    query.each(function(err, msg) {
        if (msg) { 
            res.write(JSON.stringify({ msgId: msg.fileName }));
        } else {
            res.end();
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

json mongoose node.js express

81
推荐指数
3
解决办法
11万
查看次数

Mongoose:获取完整的用户列表

我试图使用Mongoose发送所有用户的列表,如下所示:

server.get('/usersList', function(req, res) {
    var users = {};

    User.find({}, function (err, user) {
        users[user._id] = user;
    });

    res.send(users);
});
Run Code Online (Sandbox Code Playgroud)

当然,res.send(users);要发送{},这不是我想要的.有没有一种find语义略有不同的替代方案,我可以做以下事情?

server.get('/usersList', function(req, res) {    
    User.find({}, function (err, users) {
        res.send(users);
    });
});
Run Code Online (Sandbox Code Playgroud)

本质上,我希望只有在从数据库中提取所有用户时才执行回调.

javascript mongoose mongodb node.js

81
推荐指数
5
解决办法
16万
查看次数

编译Mongoose后无法覆盖模型

不确定我做错了什么,这是我的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 })
    });
Run Code Online (Sandbox Code Playgroud)

这是我的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({
     name:req.body.name,
     email: req.body.email,
     password: req.body.password,
     phone: req.body.phone,
     _enabled:false
   });

new_user.save(function(err){
    if(err) console.log(err); 
   });
Run Code Online (Sandbox Code Playgroud)

每当我试图运行check.js时,我都会收到此错误

编译后无法覆盖'用户'模型.

我知道这个错误是由于Schema不匹配造成的,但我看不出这是怎么回事?我对mongoose和nodeJS很新.

以下是我从MongoDB的客户端界面获取的内容:

MongoDB shell version: 2.4.6 connecting to: test …
Run Code Online (Sandbox Code Playgroud)

model mongoose mongodb node.js express

80
推荐指数
14
解决办法
8万
查看次数

猫鼬 - exec函数有什么作用?

我遇到了一段包含查询findOne然后是exec()函数的Mongoose代码.

我以前从未在Javascript中看过那种方法?它究竟做了什么?

javascript mongoose

80
推荐指数
4
解决办法
5万
查看次数

在Mongoose中使用AND组合两个OR查询

我想在Monoose中将两个OR查询与AND组合在一起,就像在这个SQL语句中一样:

SELECT * FROM ... WHERE (a = 1 OR b = 1) AND (c=1 OR d=1)
Run Code Online (Sandbox Code Playgroud)

我在NodeJS模块中尝试了这个,它只从主应用程序中获取模型对象:

/********** Main application ***********/
var query = MyModel.find({});
myModule1.addCondition(query);
myModule2.addCondition(query);
query.exec(...)

/************ myModule1 ***************/
exports.addCondition = function(query) {
  query.or({a: 1}, {b: 1});
}

/************ myModule2 ***************/
exports.addCondition = function(query) {
  query.or({c: 1}, {d: 1});
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所有OR条件将像在此SQL语句中一样连接在一起:

SELECT * FROM ... WHERE a = 1 OR b = 1 OR c=1 OR d=1
Run Code Online (Sandbox Code Playgroud)

如何在Mongoose中结合AND myModule1myModule2AND 的两个条件?

mongoose mongodb node.js

78
推荐指数
1
解决办法
9万
查看次数