小编Tra*_*Guy的帖子

如何在Mongoose中更新/插入文档?

也许是时候了,也许是我淹没在稀疏的文档中,而且无法绕过Mongoose更新的概念:)

这是交易:

我有一个联系方案和模型(缩短属性):

var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

var mongooseTypes = require("mongoose-types"),
    useTimestamps = mongooseTypes.useTimestamps;


var ContactSchema = new Schema({
    phone: {
        type: String,
        index: {
            unique: true,
            dropDups: true
        }
    },
    status: {
        type: String,
        lowercase: true,
        trim: true,
        default: 'on'
    }
});
ContactSchema.plugin(useTimestamps);
var Contact = mongoose.model('Contact', ContactSchema);
Run Code Online (Sandbox Code Playgroud)

我收到客户的请求,其中包含我需要的字段,因此使用我的模型:

mongoose.connect(connectionString);
var contact = new Contact({
    phone: request.phone,
    status: request.status
});
Run Code Online (Sandbox Code Playgroud)

现在我们解决了这个问题:

  1. 如果我打电话,contact.save(function(err){...})如果有相同电话号码的联系人已经存在,我将收到错误(正如预期的那样 - 唯一)
  2. 我不能打电话update()给联系人,因为文件上不存在该方法
  3. 如果我在模型上调用update:
    Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
    我进入了一些类型的无限循环,因为Mongoose更新实现显然不希望将对象作为第二个参数. …

javascript mongoose mongodb node.js

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

如何将用ES6编写的模块发布到NPM?

当我考虑在ES6中重写它时,我正准备向NPM发布一个模块,以及面向未来的模型,并学习ES6.我使用Babel转换到ES5,然后运行测试.但我不确定如何继续:

  1. 我是否进行了转换,并将结果/输出文件夹发布到NPM?
  2. 我是否在Github仓库中包含结果文件夹?
  3. 或者我是否维护2个回购,一个使用ES6代码+ gulp脚本用于Github,另一个用于转换结果+ NPM测试?

简而言之:我需要采取哪些步骤将用ES6编写的模块发布到NPM,同时仍允许人们浏览/分叉原始代码?

javascript node.js npm ecmascript-6 babeljs

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

为所有控制台消息添加时间戳

我有一个完整的,部署的,基于Express的项目,其中包含许多console.log()和console.error()语句.该项目永远运行,将stdout和stderr指向2个单独的文件.

这一切都很好,但现在我错过了时间戳 - 确切地知道错误发生的时间.

我可以在我的代码中进行某种搜索/替换,或者在每个文件中使用一些覆盖控制台的npm模块,但我不想触及每个模型/路由文件,除非我绝对必须这样做.

有没有办法,也许是Express中间件,允许我为每次调用添加时间戳,还是我必须手动添加它?

console node.js express

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

在Firefox中远程使用Google Maps V3时,"未定义谷歌"

这是我的难题:我有一个使用Google Maps V3和jQuery的页面.这一切都在FF5,Chrome和Safari本地运行良好.

一旦我上传到网站,我在第一行尝试使用谷歌对象时出现"谷歌未定义"错误

var defaultLocation = new google.maps.LatLng(lat, lng);
Run Code Online (Sandbox Code Playgroud)

它只发生在FF中,并且只发生在远程(即,如果我在本地将文件加载到FF中,它运行良好).Chrome和Safari似乎都很好用,就像我的Android和iPod浏览器一样.

这是我到目前为止所尝试的:

  1. 移至<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><head>部分的顶部.
  2. 将所有内容移动$(function() {...});到被调用initialize()和添加的函数<body onload="initialize()">
  3. 玩过脚本和css文件的顺序
  4. 将网址http://maps.google.com/maps/api/js?sensor=false粘贴到FF地址框中并验证我已获得合法脚本

但由于这只发生在远程机器上的FF中并且运行良好,否则我认为它与我的代码没有任何关系.也许FF5中的加载顺序是拧紧的.也许它比其他浏览器更优先考虑网络资源.此时我真的不知道该怎么做.

任何帮助表示赞赏.
家伙

更新:
只是想添加以下事实:在Mac上尝试上一个之后,我在Windows中尝试了FF5,并且复制了完全相同的行为.
为了更好的衡量,我也尝试了Pale Moon - 结果相同.Chrome 14,Opera 11.50甚至frickin'IE9(未包含在测试计划中)都有效.它只是FF5,现在在Mac和Windows 7上,在该页面上失败.

javascript firefox google-maps cross-browser

53
推荐指数
7
解决办法
20万
查看次数

Preact渲染的组件错误

我正在使用Preact(用于所有意图和目的,React)来呈现项目列表,保存在状态数组中.每个项目旁边都有一个删除按钮.我的问题是:当点击按钮时,删除了正确的项目(我多次验证了这一点),但是重新渲染了项目,最后一个项目丢失,删除的项目仍在那里.我的代码(简化):

import { h, Component } from 'preact';
import Package from './package';

export default class Packages extends Component {
  constructor(props) {
    super(props);
    let packages = [
      'a',
      'b',
      'c',
      'd',
      'e'
    ];
    this.setState({packages: packages});
  }

  render () {
    let packages = this.state.packages.map((tracking, i) => {
      return (
        <div className="package" key={i}>
          <button onClick={this.removePackage.bind(this, tracking)}>X</button>
          <Package tracking={tracking} />
        </div>
      );
    });
    return(
      <div>
        <div className="title">Packages</div>
        <div className="packages">{packages}</div>
      </div>
    );
  }

  removePackage(tracking) {
    this.setState({packages: this.state.packages.filter(e => e !== tracking)});
  }
} …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs preact

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

如何区分2个SQLite文件?

在Mac上使用SQLite-manager(以XUL形式).

如何从团队中的其他人提交的SQLite文件中区分出来,并合并他的更改?

谢谢.

ide sqlite diff

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

Express 4中方法覆盖中间件的作用是什么?

由于RouterExpress 4中的对象支持:

var router = require('express').Router();
router.delete('/route', function(req, res) {
    //...
};

router.put('/route', function(req, res) {
    //...
};
Run Code Online (Sandbox Code Playgroud)

方法覆盖中间件有什么用?我可以安全地将它从我app.js和它中删除package.json吗?

node.js express

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

如何从PowerShell中静音/取消静音

尝试编写一个PowerShell cmdlet,它将在开始时静音,除非已经静音,并在最后取消静音(仅当它没有静音时才开始).找不到我可以使用的任何PoweShell或WMI对象.我正在使用像auxGetVolumeauxSetVolume这样的Win32函数,但是无法让它工作(如何从IntPtr中读取值?).

我正在使用V2 CTP2.有什么想法吗?

谢谢!

powershell winapi volume mute

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

从WCF使用REST服务

我对WCF并不熟悉,但我想我会在尝试使用现有服务时学习.

我想到的一个REST API是Twitter API.我想开发一个WPF客户端,它只会在某个Twitter用户的最后5条推文中输出到屏幕.

我想知道是否有人可以请使用WCF(类,向导,代理等)简要概述我需要在Visual Studio中使用这些服务的步骤.我已经知道如何使用Web请求调用它们并解析返回的XML - 我真的希望看到WCF部分正常工作.

在此先感谢帮助我继续教育的anyoine :)

twitter rest wcf web-services visual-studio-2008

15
推荐指数
2
解决办法
8608
查看次数

如何刷新/重新加载Chrome扩展程序?

我正在开发Chrome 4(目前为4.0.249.0)的扩展程序,该扩展程序将在状态栏中显示用户的StackOverflow/SuperUser/ServerFault信誉.我设计了一个选项页面来获取用户的个人资料ID,然后将它们保存到localStorage并在扩展中很好地阅读它们.这一切都很棒.
问题是我找不到一种(程序化的)方法来在保存选项时刷新扩展名.我试图location.reload();在右键单击时从扩展页面调用- 无济于事.我进一步追求它并尝试查看Chrome chrome://extensions/页面重新加载扩展程序的功能,并找到了以下代码:

/**
 * Handles a 'reload' button getting clicked.
 */
function handleReloadExtension(node) {
  // Tell the C++ ExtensionDOMHandler to reload the extension.
  chrome.send('reload', [node.extensionId]);
}
Run Code Online (Sandbox Code Playgroud)

将此代码复制到我的事件处理程序没有帮助(是的,我尝试用[node.extensionId]实际代码替换).有人可以帮助我以正确的方式做这件事,或者指点我正确执行此操作的扩展代码吗?完成后,我会将扩展及其来源放在我的博客上.

javascript google-chrome

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