小编Shi*_*Lee的帖子

mongoose static方法返回一个蓝鸟的承诺

我正在创建一个mongoose静态方法'load',以便我的主控制器功能可以使用它(用于链接和错误处理).

UserSchema.load('54ae92dd8b8eef540eb3a66d')
.then(....)
.catch(....);
Run Code Online (Sandbox Code Playgroud)

事情是id是错误的,所以我需要抓住这个错误.我认为最好在模型层中执行此操作.

当我执行以下操作时,控制器可以捕获此错误.

UserSchema.statics.load = function(id) {

    if (!mongoose.Types.ObjectId.isValid(id)) {
        return Promise.resolve().then(function() {
            throw new Error('not a mongoose id');
        }); ------------( * )
    }

    return Promise.cast(this.findOne({
        _id: id
    }).exec());
};
Run Code Online (Sandbox Code Playgroud)

但是,如果我只执行以下操作,则错误未成功抛入控制器.catch函数.

AchievementSchema.statics.load = function(id) {
    if (!mongoose.Types.ObjectId.isValid(id)) {
        throw new Error('not a mongoose id');
    }
    return Promise.cast(this.findOne({
        _id: id
    }).exec());
};
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我正确地这样做了吗?如果有,是否有更简单的方法来编写(*)语句?我在做什么似乎很丑..谢谢.

javascript mongoose mongodb promise bluebird

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

使用变量名称对组件进行渲染

我有一个未知的反应组件列表要呈现.

// this is a react component
var DefaultModule = require('./DefaultModule.js');
Run Code Online (Sandbox Code Playgroud)

<DefaultModule/> <---这会输出一些东西,因为名字正是里面的类名 DefaultModule.js

但如果我这样做

// this is a react component
var sssss = require('./DefaultModule.js');
Run Code Online (Sandbox Code Playgroud)

<sssss/> <---这不行

那么我有没有办法获取组件名称列表并相应地渲染它们?谢谢.

ps:反应组件看起来像这样

import React, {PropTypes, Component} from 'react';

class TestComponent extends Component {

  render() {
    return (
      <div>
     1123123123123123 hahaha small test
      </div>
    );
  }
}

export default TestComponent;
Run Code Online (Sandbox Code Playgroud)

components reactjs

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

AWS EC2设置环境变量

我正在将代码部署到 AWS EC2。文档说有一些称为“用户数据”或“用户数据脚本”的东西,您可以在启动 ec2 实例时输入此信息,并且该脚本将在实例启动时执行。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts

以下是我的用户数据脚本:

#!/bin/bash
echo 1111 >> /home/ubuntu/1111.txt
export MONGODB_HOST=www.mongodb.com
export MONGODB_PORT=12345
export MONGODB_USER=user
export MONGODB_PASS=pass
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,当我使用此用户数据脚本启动实例时,我希望看到环境变量被设置,但事实并非如此。

那么我是不是做错了什么?

amazon-ec2 amazon-web-services

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

Git difftool有时不打开

我有 2 个文件夹(使用不同的代码),并初始化了 git。但是当我这样做时

git difftool -t meld 
Run Code Online (Sandbox Code Playgroud)

一个 repo 工作正常,并询问我是否要在 meld 中打开文件进行比较。另一个只是在控制台中输出所有内容而没有执行meld。

.git/config 文件也是相同的(除了 url)

有谁知道这是为什么?

git meld difftool

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

将环境变量传递给多个命令

当我做

Hello=123 npm run a && npm run b && npm run c
Run Code Online (Sandbox Code Playgroud)

我期望Hello=123环境变量在a, b and c进程内传递。但是事实证明只有a正确设置了环境变量。

我还有其他方法可以一次传递所有参数吗?

unix shell

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

使用算术的javascript运算符会产生意想不到的结果

我想在这里做算术.我这样做的原因是为了防止乱码if else检查,d有时是null或undefined.

但是以下代码给了我一些意想不到的东西 谁能告诉我发生了什么?谢谢.

var t = 2;
var d = 2;
t + (d && 1 || 0) // logs 3
t + d && 1 || 0 // logs 1
Run Code Online (Sandbox Code Playgroud)

javascript

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

Javascript获取对象属性和子属性

我正在尝试访问这样的对象属性:

var scope1 = {a: {value: 25}};
var scope2 = undefined;

var v1 = scope1.b.value || 0;  // TypeError: Cannot read property 'value' of undefined
var v2 = scope2.b.value || 0;  // TypeError: Cannot read property 'value' of undefined
Run Code Online (Sandbox Code Playgroud)

显然是 || 接线员没有给我我想要的。我知道我可以执行以下操作

var vv2 = (scope1 && scope1.b ? scope1.b.value : 0);
Run Code Online (Sandbox Code Playgroud)

但这使得代码非常冗长......所以有人知道是否有更简单的方法来做我想做的事情?谢谢。

javascript

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

使用map函数时减少javascript代码

我想迭代一个数组并对每个元素做一些事情

d = d.map(function(d){
    return _.omit(d, 'password');
})

d = d.map(function(d){
    return d.toString();
})
Run Code Online (Sandbox Code Playgroud)

这些功能正常.但是在它出现太多次后,代码变得非常混乱.

所以我想知道是否有更简单的方法来做我想做的事情?我希望只使用bind或apply关键字或某些模块(可能是lodash或下划线......)将代码减少到一行.这可能吗?

javascript dictionary lodash

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

与RESTful后端API服务进行反应入门工具包通信

https://github.com/kriasoft/react-starter-kit

我有一个后端API服务器正在运行,我正在寻找一个前端框架.然后我遇到了这个似乎是一个很好的候选人的反应初学者工具包.

我的理解是,我一次只处理一个反应组件.我可以将所有代码逻辑(如API调用,DOM元素更改等)放在componentDidMount()中,这样DOM和逻辑之间就会有交互.(我对吗?)

import React, { PropTypes } from 'react'; // eslint-disable-line no-unused-vars
import styles from './ContactPage.less'; // eslint-disable-line no-unused-vars
import withStyles from '../../decorators/withStyles'; // eslint-disable-line no-unused-vars

@withStyles(styles)
class ContactPage {

  static contextTypes = {
    onSetTitle: PropTypes.func.isRequired
  };

  render() {
    let title = 'Contact Us';
    this.context.onSetTitle(title);
    return (
      <div className="ContactPage">
        <div className="ContactPage-container">
          <h1>{title}</h1>
          <p>...</p>
        </div>
      </div>
    );
  }

}

export default ContactPage;
Run Code Online (Sandbox Code Playgroud)

这是我试图破解的反应组件的原始代码.我试图包含"请求"模块,以便我可以发出http请求.

var request = require('request');  // for backend API calls

componentDidMount() {
    request('https://www.google.com')
}
Run Code Online (Sandbox Code Playgroud)

它没用.那我在这里做错了什么?谢谢.

错误消息很长,从以下消息开始.

./~/request/lib/har.js中的错误找不到模块:错误:无法解析/ Users/ssmlee04/Desktop/react-starter-kit/node_modules/request/lib …

frontend web-component reactjs

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