小编Sco*_*zer的帖子

试图使用supertest检查响应的主体 - 得到错误

我正在尝试使用supertest进行一些测试.以下是我要测试的代码段:

it("should create a new org with valid privileges and input with status 201", function(done) {
  request(app)
    .post("/orgs")
    .send({ name: "new_org", owner: "oldschool@aol.com", timezone: "America/New_York", currency: "USD"})
    .expect(201)
    .end(function(err, res) {
      res.body.should.include("new_org");
      done();
    });
});
Run Code Online (Sandbox Code Playgroud)

我在尝试测试res主体时遇到错误:

 TypeError: Object #<Object> has no method 'indexOf'
  at Object.Assertion.include (../api/node_modules/should/lib/should.js:508:21)
  at request.post.send.name (../api/test/orgs/routes.js:24:27)
  at Test.assert (../api/node_modules/supertest/lib/test.js:195:3)
  at Test.end (../api/node_modules/supertest/lib/test.js:124:10)
  at Test.Request.callback (../api/node_modules/supertest/node_modules/superagent/lib/node/index.js:575:3)
  at Test.<anonymous> (../api/node_modules/supertest/node_modules/superagent/lib/node/index.js:133:10)
  at Test.EventEmitter.emit (events.js:96:17)
  at IncomingMessage.Request.end (../api/node_modules/supertest/node_modules/superagent/lib/node/index.js:703:12)
  at IncomingMessage.EventEmitter.emit (events.js:126:20)
  at IncomingMessage._emitEnd (http.js:366:10)
  at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
  at Socket.socketOnData …
Run Code Online (Sandbox Code Playgroud)

node.js express supertest

19
推荐指数
4
解决办法
2万
查看次数

Mongoose异步模式验证不起作用

我有以下代码验证我的"时区"字段:

orgSchema.path('timezone').validate(function(value) {
  return Timezone.findOne({_id: value}, "_id", function (err, timezone) { return false; });
}, "Please provide a valid timezone");
Run Code Online (Sandbox Code Playgroud)

即使我在最里面的函数中添加"return false",该字段也总是在传递.我知道我错过了某个地方的回调 - 我会感激一些帮助.

mongoose

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

使用mongoose保存对象后,我可以使用字段子集返回对象的最简单方法是什么?

我正在使用带有express和node的mongoose来创建REST API.保存新对象后,我想将对象返回给用户.但是,不想返回一些敏感字段,如密码,信用卡详细信息,权限,帐单历史记录等.

我认为会有相当于.select的地方,你可以只选择一个字段的子集来返回给用户.但是,它似乎不存在,"标准"只是删除您不想传递回用户的字段,如下所示:

  org.save(function(err, org) {
    if (err) return handleError(err, res);
    orgobj = org.toObject();
    delete orgobj.__v;
    delete orgobj._id;
    delete orgobj.billing;
    delete orgobj.plans;
    delete orgobj.permissions;
    return res.send(orgobj);
  });
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?我不喜欢这个,因为如果随后添加了一个字段,有人必须记住要专门删除它.此外,出于性能原因,我也不想"重新选择"该字段.

rest mongoose node.js express

4
推荐指数
1
解决办法
2783
查看次数

将DB引用到路由中对我的Node/Express项目不起作用

我正在使用node + express创建一个简单的REST API,并试图将路由逻辑从db逻辑中分离出来.我在从路由访问数据库时遇到问题.

这是我的server.js代码:

var express = require('express')
  , path = require('path')
  , http = require('http')
  , mongo = require('mongodb');

// Configure Express app
var app = express();
app.configure(function () {
    app.set('port', process.env.PORT || 3000);
    app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser()),
    app.use(express.static(path.join(__dirname, 'public')));
});

// Configure DB
var Server = mongo.Server
  , Db = mongo.Db
  , BSON = mongo.BSONPure
  , server = new Server('localhost', 27017, {auto_reconnect: true})
  , db = new Db('mydb', server, {safe: true});

// Open …
Run Code Online (Sandbox Code Playgroud)

node.js express node-mongodb-native

3
推荐指数
1
解决办法
2567
查看次数

试图删除Mongoose中的子文档给我一个内部的猫鼬错误

我有一个如下的架构(简化):

var Permission = new Schema({
  _id: String,  // email address
  role: String  // "admin" or "member"
});

var Org = new Schema({
  name: {type: String, index: {unique: true, dropDups: true}, trim: true},
  permissions: [Permission]
});
Run Code Online (Sandbox Code Playgroud)

示例文档如下所示:

{
  "name": "My Org",
  "permissions" : [
    {"_id" : "joe@gmail.com", "role" : "admin"},
    {"_id" : "mary@gmail.com", "role" : "member"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用该命令删除其中一个权限行org.permissions.remove(req.params.email),如下面的上下文所示:

exports.removePermissions = function(req, res) {
  var name = req.params.name;
  return Org
    .findOne({name: name})
    .select()
    .exec(function(err, org) {
      if (err) …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js express

1
推荐指数
1
解决办法
5745
查看次数