小编Mar*_*kus的帖子

在mongoose中创建和查找GeoLocation

我正在尝试在我的用户模型中保存位置的经度/纬度并使用它进行查询 $geoNear.我已经查看了几乎所有关于该主题的页面,但我仍然不确定如何1)适当地创建模型以及如何查询它.

这是我的模型的一部分:

loc: {
        //type: 'Point', // see 1
        //type: String, // see 2
        coordinates: [Number],
        index: '2dsphere' // see 3
    },
Run Code Online (Sandbox Code Playgroud)

@ 1:根据文档,如果我想存储一个点,那么类型必须是'Point',但它会抛出

TypeError: Undefined type `Point` at `loc`
  Did you try nesting Schemas? You can only nest using refs or arrays.
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为我猜它应该是一个 String

@ 2:这不会立即引发错误,但是当我尝试存储用户时,我得到:

name: 'ValidationError',
  errors: 
   { loc: 
      { [CastError: Cast to String failed for value "[object Object]" at path "loc"]
Run Code Online (Sandbox Code Playgroud)

@ 3:如果我想创建索引,我会得到错误:

TypeError: Undefined type `2dsphere` at `loc.index`
  Did you try nesting Schemas? …
Run Code Online (Sandbox Code Playgroud)

geospatial mongoose mongodb node.js mongodb-query

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

用猫鼬保存图像

我知道这个话题已经有很多主题,但不幸的是我直到现在才找到答案.我使用angular.js和http://angular-js.in/image-upload/中的示例代码从客户端获取图像.这部分有效

现在到node/mongodb部分,这是我的后端模型:

var userSchema = new mongoose.Schema({
    avatar: { data: Buffer, contentType: String },
    // ...
});

module.exports = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)

和我的节点代码:

exports.createAvatar = function (req, res) {
  var avatar = {
    data: req.body.data.image, // see below
    contentType: 'image/png'
  }

  models.DUser
    .findById(index.findUserId(req))
    .exec(function (err, user) {
      user.avatar = avatar;
      // ...
      user.save(function (err, user) {/* ... */ });
Run Code Online (Sandbox Code Playgroud)

和我的angularCtrl:

var foo = {
  image: image,
  imageName: image.name,
};

$http.post('/api/users', {data: foo })
    .success(function (result) { /*...*/ });
Run Code Online (Sandbox Code Playgroud)

除了req.body.data.image,我尝试了许多不同的变体,如req.body.data.image.dataURL,req.body.data.image.dataURL.data,但到目前为止没有任何工作.我对req.body.data.image的记录显示: …

javascript mongoose mongodb node.js angularjs

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

App和Web中的VoIP集成

关于如何为我们当前的移动和Web应用程序实现VoIP,我有一个非常普遍的问题.(我们有一个Android + iOS应用程序和一个基于AngularJS/NodeJS的Web应用程序).

我们想要实现的目标

在第一步中,我们希望实现应用程序之间的语音和视频通话.稍后我们可能会扩展到正常电话网络的出站呼叫.但这篇文章主要是为了获取有关如何仅实施我们的第一步的信息.

一般的想法

我们在Asterisk之前有过一些经验,但事实证明这并不容易.因此,对于这个项目,我们希望在实际实现之前获得一些反馈.

关于技术的想法

起初我认为使用WebRTC可能是一个好主意,但由于目前只支持Chrome,FF和Opera,而且几乎不支持原生移动应用程序,我们认为WebRTC目前可能不合适.(或者你认为不是吗?)在网上搜索了一下之后我们发现了这个:http://www.webrtc.org/native-code

有没有人体验过这些libs?在我们看来,这可能是现代voip解决方案的最佳解决方案(并且还允许我们跳过星号服务器)

第二个想法是为我们自己设置一个Asterisk服务器.每次用户登录App时,我都会将他作为SIP客户端连接到星号.如果一个用户调用另一个用户,我们认为我们应该能够使用节点包Asterisk Manager API(https://github.com/pipobscure/NodeJS-AsteriskManager)进行调用.

第三个想法是使用SIP提供商,但目前我不确定这是否真的是最好的主意.

由于我们不是VoIP专家,我们的应用程序中是否还有其他VoIP集成的可能性?

任何有关该主题的想法都将非常感谢!谢谢!

voip asterisk sip mobile-application node.js

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

在MongoDB中显示Angular.js中的图像

我最近打开了另一个关于如何使用node.js/mongoose在mongodb数据库中存储图像的线程.(用猫鼬保存图像)

我有点工作,但我很确定我目前的方式不是要走的路.这也可能是我无法在前端显示存储的图像的原因.

我有两个问题:

  1. 如何使用当前配置显示图像
  2. 由于我的代码在这一点上显然是错误的,我仍然想知道如何使用mongoDB存储图像.我应该只存储URL并将图像保存在我的文件服务器上吗?有没有人如何使用GridFSangular/node/mongoose 的工作示例?

这是我将图像保存到数据库的代码:

var split = req.body.data.image.dataURL.split('base64,');
// ... split until I get 'image/png' and the binary of my image
var avatar = {
  data: data,
  contentType: type
};
models.UserImages.create({ avatar: avatar, /* ... */})
Run Code Online (Sandbox Code Playgroud)

和我的Angular Ctrl用于加载图像:

User.findAvatarByUser(data).success(function (data) {
    $scope.avatar = data[0].avatar.data;
});
Run Code Online (Sandbox Code Playgroud)

这显示了以chrome为单位的日志记录.我得到的错误:

在此输入图像描述

任何帮助将非常感激!

编辑: 在丢失像素提示后,我尝试将图像保存到FS.经过一点点麻烦后我终于开始工作了.目前我将图像保存到我的FS,直到我知道我真正想要处理这个问题.

如果有人有同样的问题,这就是我如何在后端保存我的图像(我发现它在stackoverflow上的某个地方,但不幸的是我丢失了链接以给予合适的人,sry为此;))

fs.writeFile(newImageLocation, data, 'base64', function (err) {
        if (err) throw err
        console.log('File saved.')
    });
Run Code Online (Sandbox Code Playgroud)

javascript image mongodb node.js angularjs

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

重新加载角度应用后没有index.html

我有一个angular.js应用程序,其基本设置如下:我index.html渲染静态内容,如Top/Sidebar.在里面我必须<div ng-view></div>显示部分html文件,例如我的home.html

在我登录我的应用程序后index.html,它的控制器MainCtrl加载以及我home.html的相应的加载HomeCtrl.所以到目前为止应该是一切.

在我实现了一个修复程序之后(这样重新加载就不会"忘记"用户并且我没有注销 - 我基于http://www.sitepoint.com/implementing-authentication-angular-applications/上的示例)我尝试过重新加载我的页面.但现在只有我的home.html负荷.

注意:我在下面编辑了我的发现

这是有道理的,这是我的一部分app.js:

$routeProvider.when('/', {
    templateUrl: 'views/home.html',
    controller: 'HomeCtrl',
    resolve: {
        auth: function ($q, authenticationSvc) {
            var userInfo = authenticationSvc.getUserInfo();
            if (userInfo) {
                return $q.when(userInfo);
            } else {
                return $q.reject({ authenticated: false });
            }
        }
    }
})
.when('/login', {
    templateUrl: 'views/login.html',
    controller: 'LoginCtrl',
    login: true
})
Run Code Online (Sandbox Code Playgroud)

很明显,当我加载/应用程序时,只显示我的home.html.但是,如果我在登录后正常进入页面时已经拥有了什么?

我的主要问题似乎是目前对我来说,我不太确定index.html当我登录时如何以及为什么加载正常.这是我在LoginCtrlSignIn过程完成后在我的工作: …

html5 node.js express angularjs route-provider

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

Sails解决方案深入填充

我正在尝试深入填充一个集合.

例如

// UnitType.js
name: { type: 'string' }

// Unit.js
unitType: {
  model: 'unitType',
  via: '_id',
  required: true,
  index: true
}

// Product.js
unit: {
  model: 'unit',
  via: '_id',
  required: true,
  index: true
},
Run Code Online (Sandbox Code Playgroud)

问题是, - 据我所知,从互联网研究深入了解

Product.find().populate('unit.unitType');
Run Code Online (Sandbox Code Playgroud)

目前帆不支持.为了达到我想要的结果

  • 查询带有populate的产品 unit
  • 查询具有来自`product.unit.unitType``的id的UnitTypes
  • .map() product.unit.unitType 随着回应

这当然远非理想.我也尝试toJSON在模型中使用"预先填充" unitType- >不起作用,因为这不支持Promises.

在这个问题上,github上有很多线程和PR,但到目前为止我还没有找到解决这个问题的方法.有没有办法让这更好?

populate node.js sails.js

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

在<div>中动态加载Wicket面板

在我目前的Wicket应用程序中,我目前在用户点击一个菜单项后进行全页重新加载.我想将此更改为仅重新加载必要的Panel.

我目前在做什么:

我有一个BasePage.html包含菜单项和一些静态内容:

<li><a wicket:id="home" href="#">Home</a></li>
<li><a wicket:id="user" href="#">User</a></li>

<!-- and so on ->

<div class="panelarea">
    <wicket:child />
</div>
Run Code Online (Sandbox Code Playgroud)

和我的(摘要)BasePage.java:

add(new AjaxSubmitLink("home") {
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
        setResponsePage(new HomePage());
    }
});
//etc
Run Code Online (Sandbox Code Playgroud)

我的HomePage.html:

<wicket:extend>
    <span wicket:id="homePanel"></span>
</wicket:extend>
Run Code Online (Sandbox Code Playgroud)

HomePage.java(以及所有其他页面)然后添加Panel:

add(new HomePanel("homePanel"));
Run Code Online (Sandbox Code Playgroud)

而不是setResponsePage()我想在<div class="panelarea">没有重新渲染整个页面的情况下打开Panel .

任何人都可以给我一个提示吗?

java wicket wicket-6

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

Vertx SockJs Eventbus 认证

我正在尝试从前端到 vertx 后端建立 sock.js 连接。

我最初的尝试是这样的:

let token = '<the token>';
let data = {'Authorization' : 'Bearer ' + token};
let eb = new EventBus("http://localhost:8080/eventbus");
  eb.onopen = function () {
  eb.registerHandler('notifications', data, (err, msg) =>  {
    // handle the response
  });
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我需要发送有关 EventBus 创建的身份验证数据,即使官方 sock.js 文档指出这不受支持。显然现在发送new EventBus("http://localhost:9090/eventbus", data)也不起作用。

https://github.com/sockjs/sockjs-node#authorisation

我的后端处理程序:

final BridgeOptions bridgeOptions = new BridgeOptions()
  .addOutboundPermitted(new PermittedOptions().setAddress("notifications"))

final SockJSHandler sockJSHandler = SockJSHandler.create(vertx).bridge(bridgeOptions, event -> {
  event.complete(true);
});

router.route("/eventbus/*").handler(ctx -> {
  String token = ctx.request().getHeader("Authorization"); // null …
Run Code Online (Sandbox Code Playgroud)

websocket event-bus vert.x sockjs

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