小编Jar*_*ski的帖子

如何替换 ObjectId 引用。与来自 MongoDB 的实际对象(最好在服务器端)?

这是主体对象的架构:

var newsSchema = new Schema({
    headline: String,
    paragraph: String,
    imgURI: String,
    imgThumbURI: String,
    imgCaption: String,
    addedOn: Date,
    addedBy: {
        type: ObjectID,
        ref: 'usr'
    }
});
var News = mongoose.model('news', newsSchema);
Run Code Online (Sandbox Code Playgroud)

...以及 addedBy 的架构:

var usr = new Schema({
    username: String,
    avatar: {
        type: ObjectID,
        ref: 'avtr'
    },
    href: String
});
var UserModel = mongoose.model('usr', usr);
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。所有作品。然后在 Angular 客户端中,我检索了一个新闻对象,但 addedBy 值不是所需的对象,而是一个 ObjectId:

{
    "headline":"Shocking news from the Neverland!",
    ...
    "addedBy":"520e9aac9ca114914c000003", // <-- the offender!!
    "addedOn":"2013-08-16T21:33:32.294Z",
    "_id":"520e9aac9ca114914c000001",
    "__v":0
}
Run Code Online (Sandbox Code Playgroud)

当我想要这样的对象时:

{ …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js express angularjs

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

Mongoose不会将数据保存到MongoDB


下面是我想要保存到MongoDB的对象文字.它在app.js文件中定义,该文件是Express服务器.由于对象在服务器中是硬编码的,我的假设是每次运行服务器时都会将新副本保存到数据库中,或者至少文档会被保存一次,并且在检测到文件时会被覆盖或保持不变.新文档与上次运行的服务器上保存的文档相同.令我惊讶的是,不仅没有在MongoDB中创建副本,而且根本没有保存文档.然而,已经创建了'news'集合,正如mongo shell'show collections'所证实的那样.此外,我没有在回调函数中收到任何错误.我也在我的Express'/ news'路线中尝试过Model.create(doc,fn),但这也行不通(每次客户调用'/ news'路径时都应该保存文档,但是是不是).我错过了什么?
请阅读标有"< - "的注释,看看我遇到的其他问题或意外行为.如果你能在答案中解决这些问题,我将非常感激.

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , fs = require('fs');

// Defining connection to the database:
var mongoose = require('mongoose').
    connect("mongodb://localhost:27017/my-test-db"),
    db = mongoose.connection;
var Schema = mongoose.Schema;
var ObjectID = Schema.ObjectId;
// Setting up the debug flag:
mongoose.set('debug, true');
// Logging connection:
db
  .on('error', console.error.bind(console, 'DB connection error.'))
  .once('open', console.log.bind(console, 'DB Connection established.'));

// Defining MongoDB schemas: …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js express

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

有没有办法连接两个字符串然后处理输出标记内的结果而不是字符串?

这就是我想要完成的事情:

  <ul class="site-nav__dropdown">
    {% for childlink in linklists[child_list_handle].links %}
this - {% assign color_from_settings = 'settings.collection_color_' | append: forloop.index %}
used here -  <li{% if childlink.active %} class="site-nav--active" {% else %} style="background-color: {{ color_from_settings }}" {% endif %}>
        <a href="{{ childlink.url }}" class="site-nav__link">{{ childlink.title | escape }}</a>
      </li>
    {% endfor %}
  </ul>
Run Code Online (Sandbox Code Playgroud)

当它被渲染时,我得到:

background-color: settings.collection_color_1;
Run Code Online (Sandbox Code Playgroud)

而不是从settings_data.json获取的实际颜色,如下所示:

{
  "current": "Default",
  "presets": {
    "Default": {
      ...
      "collection_color_1": "#9997c0",
      "collection_color_2": "#8997b1",
      "collection_color_3": "#7997a2",
      "collection_color_4": "#699793",
      "collection_color_5": "#599784",
      "collection_color_6": "#499775",
      "collection_color_7": "#399766",
      "collection_color_8": "#299757", …
Run Code Online (Sandbox Code Playgroud)

liquid shopify

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

在指令的模板中,如何让角度ui-router的ui-sref工作?

基本上,我正在尝试更改/自定义ui.bootstrap.accordion的行为.一切正常,除了与ui-router的集成.
这是我想要使用手风琴的方式:

  <accordion> <!-- this element is actually separate view in a parent state of the accordion-group's below.-->
    <accordion-group  ui-sref="site.home.newsID_1"> <!-- accordion-groups will be generated with ng-repeat.-->
      <accordion-heading>
        News 1
      </accordion-heading>
      <p>This is</p>
    </accordion-group>
    <accordion-group  ui-sref="site.home.newsID_2">
      <accordion-heading>
        News 2
      </accordion-heading>
      <p>Home News's</p>
    </accordion-group>
    <accordion-group ui-sref="site.home.news.newsID_3">
      <accordion-heading>
        News 3
      </accordion-heading>
      <p>Preview and navigation</p>
    </accordion-group>
  </accordion>
Run Code Online (Sandbox Code Playgroud)

下面是手风琴的修改模板:

<div ng-mouseenter="isOpen = !isOpen" ng-mouseleave="isOpen = !isOpen">
  <div class="accordion-group" ng-class="{transparentBackground: isClicked}">

      <div class="accordion-heading">
        <a id="link" ui-sref="site" class="accordion-toggle" ng-click="isClicked = !isClicked" accordion-transclude="heading">
          {{heading}}
        </a>
      </div>

    <div …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive angular-ui-bootstrap angular-ui-router

5
推荐指数
2
解决办法
3万
查看次数

Matter.js 如何让物体(圆圈)在0重力的盒子里无限弹跳(完美弹性)

我专门寻找在世界重力(x 和 y)为 0 时有效的主体选项。我当前的主体选项如下:

physics: {
    frictionAir: 0,
    friction: 0,
    frictionStatic: 0,
    inertia: Infinity,
    restitution: 1,
    label: 'circle'+Date.now()+Math.random(),
    collisionFilter: {
      mask: 0x001
    },
},
Run Code Online (Sandbox Code Playgroud)

尝试了各种组合,包括连续应用 setVelocity 和/或 applyForce,但这些组合无法按预期工作。我希望仅应用一次 setVelocity 就能使所有物体永远保持移动。所以在我的update函数中我做了这样的事情:

        if(!this.setInMotion){
            Matter.Body.setVelocity(myBody, 
                {x: (Math.random() - 0.5) * 2, 
                y: (Math.random() - 0.5) * 2})
            this.setInMotion = true
        }
Run Code Online (Sandbox Code Playgroud)

但物体只是(缓慢地)移动到盒子(由静态矩形组成)的侧面,然后沿着它们滑动到其角落,或者完全停止而根本不弹跳。设置 setAngularVelocity 确实会使物体反弹,但每次碰撞后的方向和速度就会变得不符合预期。

感谢您的时间。

贾里德

javascript matter.js

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

我什么时候应该使用 Double.longBitsToDouble(...) 而不是简单地将 long 转换为 double?

我有一个 double 值数组,其中最后一个值实际上是一个很长的表示时间(以毫秒为单位)。因此,这个 long 需要转换为 double 以适应数组。稍后在检索此 long 值时,需要将其转换回 long 类型。至关重要的是,从双精度数组中检索后的 long 值与我在将其放入数组之前的值完全相同(低至一毫秒)。不会对数组中的 long 值执行任何操作。所以问题是:
我应该简单地将 long 值转换为 double 并在检索时将其转换回 long 吗?这会保留我的多头的确切价值吗?
或者我应该使用 Double.longBitsToDouble(time) 方法将 long 放入数组并使用 Double.doubleToLongBits(time) 检索它。
或者我应该使用 Double.longBitsToDouble(time) 将 long 值放入数组中并通过简单地将其转换为 long 类型来检索编码的 long ?
预先感谢您的帮助。

java casting type-conversion primitive-types

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

Angular ui-bootstrap手风琴无法正常工作

直接从
http://angular-ui.github.io/bootstrap/复制的示例
根本不起作用,既不在本地也不在plunker中.不知道为什么.Bootstrap CSS被加载,ui-bootstrap-tpls.min.js和angular.min.js也是如此(尽管角度本身工作得很好).
这里是plunker:
http://plnkr.co/edit/15GWWFSUwab4VmaxfFPf
我在浏览器中没有js错误,但它无法正常工作.
请帮忙.我需要在我的网站上使用它(即使我写自己的html/js代码时手风琴也不起作用).

accordion angularjs angular-ui

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

如何在复杂的安全规则要求的背景下对Firebase中的数据进行非规范化/结构化?

我的原始标题是"如何在Firebase中构建和保护用户(帐户)数据,以确保用户安全访问." 因为这是这个问题的领域,但后来我认为可以形成一个更普遍的问题.说我熟悉
https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html
但是和本文一样,它不太适用于我的问题,所以我走了


首先,我将使用简单登录电子邮件/密码验证类型(但如果验证用户的电子邮件必须涉及服务器端编码,则可能会使用Persona).
我有一个userData对象,其中存储有用户数据(读取用户帐户).要求每个用户只能读取存储在自己帐户中的数据.所有用户将访问的实际数据将存储在名为comingData的单独节点中.
用户可以访问来自即将到来的数据的哪些数据将取决于用户所做的购买类型:
具有"订阅"类型的那些数据将能够访问所有数据,直到他们的订阅到期为止.我假设"now"变量可用于通过安全表达式实现此目的.
具有"购买"类型的用户只能访问购买的数据(在数组中列出).
admin@mydomain.com需要能够读取所有用户的所有数据,但只能写入(并读取)即将到来的DATA节点.

所以这是我试图保存到Firebase的测试数据结构:

new Firebase(url).update({
  userData: {
    "admin@mydomain.com" : {
      subscription : {expire : '9999999999999'},
      purchase : []
    },
    "testUser@somwhere.com" : {
      subscription : {expire : '1379904665974'},
      purchase : ['upcomingData/-J47idp64ANBRmFS5rVY', 'upcomingData/-J47idpHg-pwzW1c-rfw', 'upcomingData/-J47idpLfIhlUQWTPc9y']
    },
    "testUser2@somwhereelse.co.uk" : {
      subscription : {expire : '1379904734517'},
      purchase : ['upcomingData/-J47idp64ANBRmFS5rVY', 'upcomingData/-J47idpHg-pwzW1c-rfw', 'upcomingData/-J47idpLfIhlUQWTPc9y']
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为'.' 字符.
我应该像这样去DOT mangle:

"admin@mydomainDOTcom" : {...}
Run Code Online (Sandbox Code Playgroud)

或者更确切地说,我应该在创建到userData节点时将()"空"用户帐户推送到userData节点,并将用户的用户名保存为{"id":"admin@mydomain.com"}属性?
如何在Firebase中设置安全规则,以便userData的内容在任何时候都是只读的,除了在成功购买时写入(比如使用PayPal)?
这可以安全地完成而无需借助服务器代码吗?
我知道我可以设置安全规则,以便只有服务器可以将数据写入Firebase,但这将涉及服务器端代码,然后编写适当的数据以响应有效的PayPal支付通知(IPN) - 服务器我宁愿避免使用的代码,不仅因为我不太熟悉服务器端编码(虽然应该能够成功接收node.js),还因为LAMP堆叠共享服务器仍然比需要的VPS便宜得多对于节点(aaand我不能做php :().
客户端代码将使用很棒的Angular.js/angularFire组合开发.
感谢你的时间,
Jared

angularjs firebase firebase-security

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

如何在标记为空(不包含文本)时使用ng-hide隐藏标记

我想使用ng-hide指令隐藏每个没有内容的标签(简单文本).这是我想要实现的目标:

<div class="menu-head" ng-hide="c1.section == ''">{{c1.section}}</div>

但这不起作用.但是,以下两个评估为true(为了测试目的,我将c1.section字段设置为'Section 1'的值)并且相应的div变为隐藏:

<div class="menu-head" ng-hide="c1.section == c1.section">{{c1.section}}</div>
<div class="menu-head" ng-hide="c1.section == 'Section 1'">{{c1.section}}</div>

c1.section通过

<div ng-repeat="c1 in col1">
Run Code Online (Sandbox Code Playgroud)

来自这个控制器:

function MenuCtrl($scope) {
    "use strict";
    $scope.col1 = MenuData.col1;
    $scope.col2 = MenuData.col2;
    $scope.col3 = MenuData.col3;
}
Run Code Online (Sandbox Code Playgroud)

对象col1可能包含或可能不包含字段"section".很明显,每当对象中缺少一个字段(任何字段)时,我希望它的div缺失/不显示在DOM中.这是MenuData对象:

var MenuData = {
    col1: [
        {section: 'Section 1'}, // <-here the fields id, name, price and descr are missing so their divs must not show up in the DOM.
        {
            id: '1',
//            section: 'Section 2', <- here …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

firebase.js(Firebase js API)在Webstorm中无法识别


我正在使用(测试)Webstorm 7 EAP进行开发.我下载了
https://cdn.firebase.com/v0/firebase.js
以便能够完成代码并使用适用于Firebase的JSDocs.
令我失望的是,我不仅没有喷射JSDocs(firebase.js似乎缩小了),但webstorm甚至根本看不到Firebase API.
当我输入:

var fbase = new Firebase(...)
Run Code Online (Sandbox Code Playgroud)

Webstorms警告"Unresolved type Firebase".
如何让Webstotm很好地与Firebase一起玩?
我觉得我的问题是由于firebase.js缩小了.
有没有一个版本的firebase.js没有缩小和JSDocs?会帮助很多.
BTW奇怪的是,Webstorm 7可以很好地看到angularFire.js.
关于
贾里德

javascript webstorm firebase

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