javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

node.js-创建后如何在猫鼬中填充子文档?

我要在item.comments列表中添加评论。 在响应中将其输出之前,我需要获取comment.created_by用户数据。 我应该怎么做?

    Item.findById(req.param('itemid'), function(err, item){
        var comment = item.comments.create({
            body: req.body.body
            , created_by: logged_in_user
        });

        item.comments.push(comment);

        item.save(function(err, item){
            res.json({
                status: 'success',
                message: "You have commented on this item",

//how do i populate comment.created_by here???

                comment: item.comments.id(comment._id)
            });
        }); //end item.save
    }); //end item.find

我需要在res.json输出中填充comment.created_by字段:

                comment: item.comments.id(comment._id)

comment.created_by是我的猫鼬CommentSchema中的用户参考。 它目前只给我一个用户ID,我需要它填充所有用户数据,密码和盐字段除外。

这是人们要求的架构:

var CommentSchema = new Schema({
    body          : { type: String, required: true }
  , created_by    : { type: Schema.ObjectId, ref: 'User', index: true }
  , created_at    : { type: Date }
  , updated_at    : { type: Date }
});

var ItemSchema = new Schema({
    name    : { type: String, required: true, trim: true }
  , created_by  : { type: Schema.ObjectId, ref: 'User', index: true }
  , comments  : [CommentSchema]
});
trans by 2019-11-08T06:23:54Z

mongodb-使用Mongoos找不到按ObjectId搜索的文档

  Campaign.find {client_id:req.param('client_id')}, (error, campaigns) ->
    if error
      response =
        error: error.message
    else
      for campaign in campaigns
        query =
          campaign_id: campaign._id
        console.log query
        CampaignResponse.find query, (err, campaignResponsesCount) ->
          console.log campaignResponsesCount

      response = campaigns

    res.json response

由于某种原因,这将不返回任何结果。 但是,CampaignResponse中有特定于campaign._id的项目。我很确定这是类型和类型转换的问题,但是我不知道该怎么做。

有什么帮助吗?

trans by 2019-11-06T08:10:54Z

mongodb-Node.js和Mongoos的管理面板

自从我正在寻找一个Node.js包以提供一个干净的(但可自定义的)管理界面以结构化的方式对MongoDB数据库执行CRUD操作以来已经有一段时间了(允许受信任的用户编辑涉及自动表单验证的数据,考虑到 模型之间的关系等)。

的确,可以始终使用第三方工具来实现此目的(例如Django Admin界面或Rails Admin)。

但是我想知道在Node.js之上是否有已经运行的解决方案。

有人知道这种解决方案吗?

请注意,我不是在寻找访问数据库的接口,例如phpmyadmin或mongoose-admin。

trans by 2019-11-03T02:41:17Z

javascript-Node.js-与猫鼬建立关系

我有2个架构,Custphonecustphone.subdomain. {"$oid": "4e9b532b01c642bf4a000003"} belongs_to a SubdomainSubdomain has_many Custphones

问题在于使用猫鼬创建关系。 我的目标是这样做:custphone.subdomain并获取Custphone所属的子域。

我的模式中有这个:

SubdomainSchema = new Schema
    name : String

CustphoneSchema = new Schema
    phone : String
    subdomain  : [SubdomainSchema]

当我打印保管电话结果时,得到以下信息:

{ _id: 4e9bc59b01c642bf4a00002d,
  subdomain: [] }

custphone.subdomain结果在MongoDB中具有{"$oid": "4e9b532b01c642bf4a000003"}时。

我想做custphone.subdomain,并获取客户电话的子域对象。

trans by 2019-10-26T19:36:02Z

mongodb-猫鼬:较深的人口(填充一个填充字段)

我有articles模型:

Category:
    ...
    articles: [{type:ObjectId, ref:'Article'}]

文章模型包含对articles的引用。

Article:
    ...
    account: {type:ObjectId, ref:'Account'}

因此,使用articles填充的类别模型将是:

{ //category
    articles: //this field is populated
     [ { account: 52386c14fbb3e9ef28000001, // I want this field to be populated
         date: Fri Sep 20 2013 00:00:00 GMT+0400 (MSK),
         title: 'Article 1' } ],
    title: 'Category 1' }

问题是:如何填充已填充字段([articles])的子字段(帐户)? 这是我现在的做法:

globals.models.Category
    .find
        issue : req.params.id
        null
        sort:
            order: 1
    .populate("articles") # this populates only article field, article.account is not populated
    .exec (err, categories) ->
        console.log categories

我知道在这里进行了讨论:猫鼬:填充一个已填充的字段,但未找到实际的解决方案

trans by 2019-10-24T08:07:43Z

node.js-猫鼬模式尚未注册国防部

我正在学习平均堆栈,当我尝试使用启动服务器时

npm start

我有一个例外说:

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”注册架构,但是什么可能导致异常抛出呢?

提前致谢。

编辑:这是异常错误

/home/arash/Documents/projects/personal/flapper-news/node_modules/mongoose/lib/index.js:323
  throw new mongoose.Error.MissingSchemaError(name);
        ^
MissingSchemaError: Schema hasn't been registered for model "Post".
Use mongoose.model(name, schema)

这是带有猫鼬初始化的app.js代码:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/news');
require('./models/Posts');
require('./models/Comments');

前行:

app.use('/', routes);
trans by 2019-10-24T06:28:07Z

通过Mongoose JS的MongoDB-什么是findByID?

我正在用ExpressJS,PassportJS,MongoDB和MongooseJS编写NodeJS服务器。 我只是设法让PassportJS使用通过Mongoose获得的用户数据进行身份验证。

但是要使其正常工作,我必须使用如下所示的“ findById”函数。

var UserModel = db.model('User',UserSchema);

UserModel.findById(id, function (err, user) { < SOME CODE > } );

UserModel是猫鼬的模型。 我早些时候声明了findById。 所以我想UserModel.findById()是猫鼬模型的一种方法?

findById是做什么的,并且上面有文档吗? 我在谷歌上搜索了一下,但没有找到任何东西。

trans by 2019-10-13T22:36:21Z

node.js-将Mongoose文档转换为json

我以这种方式将猫鼬文档作为json返回:

UserModel.find({}, function (err, users) {
    return res.end(JSON.stringify(users));
}

但是,还返回了user .__ proto__。 没有它我怎么能回来? 我尝试了这个但没有用:

UserModel.find({}, function (err, users) {
    return res.end(users.toJSON());    // has no method 'toJSON'
}
trans by 2019-10-11T02:30:56Z

node.js-猫鼬中哪种SchemaType最适合时间戳?

我正在使用Mongoose,MongoDB和Node。

我想定义一个架构,其中的一个字段是date \ timestamp。

我想使用此字段来返回最近5分钟内已更新的所有记录。

由于在Mongoose中我无法使用Timestamp()方法,因此我了解到,我唯一的选择是使用以下Javascript方法:

time : { type: Number, default: (new Date()).getTime() } 

这可能不是查询庞大数据库的最有效方法。如果有人可以分享一种更有效的实施方法,我将非常感激。

有什么办法可以用Mongoose来实现,并且可以使用MongoDB时间戳吗?

trans by 2019-10-06T17:17:24Z

mongodb-如何在Mongoose / Node.js中同时保存多个文档?

目前,我使用保存添加单个文档。 假设我有一系列文档希望存储为单个对象。 有没有一种方法可以通过单个函数调用将它们全部添加,然后在完成后获得单个回调? 我可以单独添加所有文档,但是管理回调以解决所有问题。

trans by 2019-10-05T11:34:51Z

mongodb-猫鼬限制/偏移量和计数查询

查询性能有点奇怪...我需要运行一个查询,该查询可以计算文档总数,并且还可以返回可以限制和偏移的结果集。

因此,我总共有57个文档,而用户希望将10个文档偏移20。

我可以想到两种方法,首先是查询所有57个文档(作为数组返回),然后使用array.slice返回所需的文档。 第二个选项是运行2个查询,第一个查询使用mongo的本地“ count”方法,然后使用mongo的本地$ limit和$ skip聚合器运行第二个查询。

您认为哪种方法更好? 在一个查询中完成所有操作,还是运行两个单独的查询?

编辑:

// 1 query
var limit = 10;
var offset = 20;

Animals.find({}, function (err, animals) {
    if (err) {
        return next(err);
    }

    res.send({count: animals.length, animals: animals.slice(offset, limit + offset)});
});


// 2 queries
Animals.find({}, {limit:10, skip:20} function (err, animals) {            
    if (err) {
        return next(err);
    }

    Animals.count({}, function (err, count) {
        if (err) {
            return next(err);
        }

        res.send({count: count, animals: animals});
    });
});
trans by 2019-10-05T09:43:10Z

node.js-记录猫鼬在应用程序中触发的所有查询

我有使用nodejs和mongodb的应用程序。 我用猫鼬做ODM。现在,我想记录整个应用程序中猫鼬触发的所有查询。

如何记录这些?

trans by 2019-10-05T05:39:53Z

node.js-在Mongoose中保存对象后如何获取objectID?

var n = new Chat();
n.name = "chat room";
n.save(function(){
    //console.log(THE OBJECT ID that I just saved);
});

我想console.log我刚刚保存的对象的对象ID。 我如何在猫鼬中做到这一点?

trans by 2019-10-03T21:24:19Z

猫鼬-MongoDB的$ in子句是否保证ord

使用MongoDB的$in子句时,返回文档的顺序是否始终与数组参数的顺序相对应?

trans by 2019-09-29T09:55:08Z

node.js-如何保护Mongoose / MongoDB中的密码字段,以便在填充集合时它不会在查询中返回?

假设我有两个集合/方案。 一个是带有用户名和密码的用户架构字段,然后,我有一个博客架构,该博客架构在作者字段中引用了用户架构。 如果我用猫鼬做类似的事情

Blogs.findOne({...}).populate("user").exec()

我将拥有Blog文档,并且也将填充用户,但是如何防止Mongoose / MongoDB返回密码字段? 密码字段已散列,但不应返回。

我知道我可以省略密码字段,并在一个简单的查询中返回其余字段,但是如何用填充方法做到这一点。 另外,有什么优雅的方法吗?

另外,在某些情况下,我确实需要获取密码字段,例如当用户想要登录或更改密码时。

trans by 2019-09-27T17:02:21Z

node.js-编译后的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 })
    });

这是我的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); 
   });

每当我尝试运行check.js时,都会出现此错误

编译后无法覆盖“用户”模型。

我知道此错误是由于架构不匹配引起的,但我看不到发生了什么? 我对mongoose和nodeJS很陌生。

这是我从MongoDB的客户端界面中获得的信息:

MongoDB shell version: 2.4.6 connecting to: test 
> use event-db 
  switched to db event-db 
> db.users.find() 
  { "_id" : ObjectId("52457d8718f83293205aaa95"), 
    "name" : "MyName", 
    "email" : "myemail@me.com", 
    "password" : "myPassword", 
    "phone" : 900001123, 
    "_enable" : true 
  } 
>
trans by 2019-09-27T14:44:42Z

node.js-在Mongoose中将两个OR查询与AND结合

我想在Mongoose中将两个OR查询与AND结合在一起,例如以下SQL语句:

SELECT * FROM ... WHERE (a = 1 OR b = 1) AND (c=1 OR d=1)

我在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});
}

但这是行不通的,所有OR条件都将像下面的SQL语句一样连接在一起:

SELECT * FROM ... WHERE a = 1 OR b = 1 OR c=1 OR d=1

如何在猫鼬中将myModule1myModule2的两个条件与AND结合在一起?

trans by 2019-09-27T07:10:49Z

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

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

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

使用节点js实现此目的的正确方法是什么? 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();
        }
    });
});
trans by 2019-09-18T15:40:12Z

mongodb - 使用$或condition的Mongoose的find方法无法正常工作

最近我开始在Nodejs上使用MongoDB和Mongoose。

当我使用$or条件的Model.find方法和_id字段时,Mongoose无法正常工作。

这不起作用:

User.find({
  $or: [
    { '_id': param },
    { 'name': param },
    { 'nickname': param }
  ]
}, function(err, docs) {
   if(!err) res.send(docs);
});

顺便说一句,如果我删除'_id'部分,这就行了!

User.find({
  $or: [
    { 'name': param },
    { 'nickname': param }
  ]
}, function(err, docs) {
   if(!err) res.send(docs);
});

而在MongoDB shell中,两者都能正常工作。

trans by 2019-09-18T08:29:43Z

node.js - (node:3341)DeprecationWarning:Mongoose:mpromis

我正在尝试使用我的自定义方法在猫鼬的顶部开发一个类,所以我用我自己的类扩展了猫鼬但是当我调用创建一个新的汽车方法时它可以工作但它的条带和错误,在这里我让你 看看我想做什么。

我收到了这个警告

(node:3341) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html

在我之后

driver.createCar({
      carName: 'jeep',
      availableSeats: 4,
    }, callback);

driver是Driver类的一个实例

const carSchema = new Schema({
  carName: String,
  availableSeats: Number,
  createdOn: { type: Date, default: Date.now },
});
const driverSchema = new Schema({
 email: String,
 name: String,
 city: String,
 phoneNumber: String,
 cars: [carSchema],
 userId: {
   type: Schema.Types.ObjectId,
   required: true,
 },
createdOn: { type: Date, default: Date.now },
});
const DriverModel = mongoose.model('Driver', driverSchema);

class Driver extends DriverModel {
  getCurrentDate() {
  return moment().format();
}
create(cb) {
  // save driver
  this.createdOn = this.getCurrentDate();
  this.save(cb);
}
remove(cb) {
  super.remove({
  _id: this._id,
 }, cb);
}
createCar(carData, cb) {
  this.cars.push(carData);
  this.save(cb);
}
getCars() {
  return this.cars;
 }
}

关于我做错什么的任何想法?

trans by 2019-09-12T04:19:00Z

上一页 1 2 3 4 5 6 下一页 共6页