我目前在/models/models.js文件中为我的Mongoose/NodeJS应用程序提供了所有模型(模式定义).
我想将这些分成不同的文件:user_account.js,profile.js等.但是我似乎无法这样做,因为我的控制器断开并报告" 无法找到模块 "一旦我将这些类拆开.
我的项目结构如下:
/MyProject
/controllers
user.js
foo.js
bar.js
// ... etc, etc
/models
models.js
server.js
Run Code Online (Sandbox Code Playgroud)
我的models.js文件的内容如下所示:
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
mongoose.connect('mongodb://localhost/mydb');
var UserAccount = new Schema({
user_name : { type: String, required: true, lowercase: true, trim: true, index: { unique: true } },
password : { type: String, required: true },
date_created : { type: Date, required: true, default: Date.now }
});
var Product = new Schema({
upc : { type: String, …Run Code Online (Sandbox Code Playgroud) 我有一个转储1,2,3,4,5和6的HG存储库.
当我提交第4版时,我在不知不觉中拙劣地修改了我不应该拥有的rev3中的一些变化.直到第6版已经提交,我才注意到这一点.
我需要撤消rev 4中的更改,但之后重新应用所有其他更改.基本上撤消提交#4.我怎样才能做到这一点?
我还是RxJava的新手,我在Android应用程序中使用它.我已经阅读了关于这个主题的公吨,但仍然觉得我错过了一些东西.
我有以下场景:
我有数据存储在系统中,可通过各种服务连接(AIDL)访问,我需要从该系统中检索数据(可能会发生1-n次异步调用).Rx帮助我简化了这段代码.但是,整个过程往往需要几秒钟(超过5秒+),因此我需要缓存此数据以加速本机应用程序.
此时的要求是:
初始订阅时,缓存将为空,因此我们必须等待所需的加载时间.没什么大不了.之后,应该缓存数据.
后续加载应该从缓存中提取数据,但是应该重新加载数据并且磁盘缓存应该在幕后.
问题:我有两个Observable - A和B. A包含从本地服务中提取数据的嵌套Observable(这里有吨).B更简单.B只包含从磁盘缓存中提取数据的代码.
需要解决:a)返回缓存项(如果已缓存)并继续重新加载磁盘缓存.b)缓存为空,从系统加载数据,缓存并返回.后续调用将返回"a".
我有几个人推荐一些操作,如flatmap,merge甚至主题,但由于某种原因,我无法连接点.
我怎样才能做到这一点?
在rails 3布局中测试逻辑的最佳方法是什么?
示例:当用户登录我的网站时,如果他们尚未完成入职流程,我会在所有页面的屏幕顶部向他们显示提醒.这个逻辑被放入应用程序布局中.我只需检查登录用户的特定密钥.如果密钥不存在,我会显示警报.一旦钥匙出现(意味着他们已经完成了入职)我就不会显示警报.
目前我正在尝试使用视图测试,但我ActionView::Template::Error: undefined method通过包含应用程序布局得到各种验证'为nil:NilClass`错误,我似乎无法测试此功能.
我需要确保我有这个测试,因为如果由于某种原因,我的一个开发人员意外地破坏了这个功能(查看显示入门是不完整的)我们需要在构建时立即知道.
我试图在我的布局中测试的代码如下所示:
<% if user_signed_in? %>
<% unless current_user.has_completed_onboarding? %>
<div class="alert">
You cannot accept payments from your clients until you set up your payment gateway.
<%= link_to "Set up your", payment_gateway_path %> payment gateway. Its quick, we promise. :)
</div>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我想确保如果没有提供此消息将显示的入门详细信息以及是否已提供,则不要显示此消息.
我有一个rails应用程序,它有三种不同类型的用户,我需要它们共享相同的公共配置文件信息.但是,每个不同的用户本身也具有唯一的属性.我不确定如何分离出不同的领域.
我正在使用设计进行身份验证,可以使用cancan进行授权.因此,我有一个User模型,其中包含一组可应用于用户的角色.这个类看起来像这样:
class User < ActiveRecord::Base
# ... devise stuff omitted for brevity ...
# Roles association
has_many :assignments
has_many :roles, :through => :assignments
# For cancan: https://github.com/ryanb/cancan/wiki/Separate-Role-Model
def has_role?(role_sym)
roles.any? { |r| r.name.underscore.to_sym == role_sym }
end
end
Run Code Online (Sandbox Code Playgroud)
每个用户都有一个配置文件包括:
我不想用这个信息污染用户模型,所以我把它扔进了一个Profile模型.这部分很简单.这会将User模型转换为如下所示:
class User < ActiveRecord::Base
# ... devise stuff omitted for brevity ...
# ... cancan stuff omitted for brevity ...
has_one :profile
end
Run Code Online (Sandbox Code Playgroud)
额外的领域是我对如何模型有一些不安的感觉......
如果用户是管理员,他们将拥有唯一的字段,例如:
如果用户是所有者,他们将拥有唯一的字段...... …
activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
有谁知道如何测试Mongoose Validations?
例如,我有以下Schema(作为示例):
var UserAccount = new Schema({
user_name : { type: String, required: true, lowercase: true, trim: true, index: { unique: true }, validate: [ validateEmail, "Email is not a valid email."] },
password : { type: String, required: true },
date_created : { type: Date, required: true, default: Date.now }
});
Run Code Online (Sandbox Code Playgroud)
该validateEmail方法被定义为这样的:
// Email Validator
function validateEmail (val) {
return /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(val);
}
Run Code Online (Sandbox Code Playgroud)
我想测试验证.最终的结果是我希望能够测试验证并根据发生的事情,然后我可以编写其他测试来测试这些代码片段之间的交互.示例:用户尝试使用与所用用户名相同的用户名进行注册(电子邮件已在使用中).我需要一个我可以实际拦截的测试,或者看到验证工作没有达到DB.我不想在这些测试中击中Mongo.这些应该是UNIT测试而不是集成测试.:)
谢谢!
我在使用GSON时遇到了一些麻烦,主要是从JSON反序列化到POJO.
我有以下JSON:
{
"events":
[
{
"event":
{
"id": 628374485,
"title": "Developing for the Windows Phone"
}
},
{
"event":
{
"id": 765432,
"title": "Film Makers Meeting"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
随着以下POJO的......
public class EventSearchResult {
private List<EventSearchEvent> events;
public List<EventSearchEvent> getEvents() {
return events;
}
}
public class EventSearchEvent {
private int id;
private String title;
public int getId() {
return id;
}
public String getTitle() {
return title;
}
}
Run Code Online (Sandbox Code Playgroud)
...我正在使用以下代码进行反序列化,其中json输入是上面的json
Gson gson = new Gson();
return gson.fromJson(jsonInput, …Run Code Online (Sandbox Code Playgroud) 我正在寻找可供下载的免费 UPC 或条形码数据库。我看过 upcdataBase.com 和其他一些网站,但这些网站不允许免费下载数据库。文件类型不是一个大问题,因为我可以使用 SQL、csv、文本、XML、json 或其他任何东西。
有谁知道我在哪里可以找到一个?我不需要网络服务,我需要一个实际的文件或方法来下载某人拥有的所有 upcs 或条形码。一个大的包容性数据库会很棒,但即使是部分数据库也会很棒。谢谢
我正在寻找最有效的方法来替换文件中的 JSON 对象。
20150628 - 这篇文章底部的更新
这是场景:
我有一堆 JSON 文件(很多),在这些文件中是大块的 JSON(有时是 20-30K 行)。这些是我们拥有的各种测试程序的配置。最近,需要进行更改才能更改对象:
"createdAt": {
"year": 2014,
"month": 11,
"dayOfMonth": 24,
"hourOfDay": 2,
"minute": 22,
"second": 54
}
Run Code Online (Sandbox Code Playgroud)
到这样的格式:
"createdAt":"2015-05-12T21:14:51Z"
Run Code Online (Sandbox Code Playgroud)
让我们更轻松。我想用以下内容替换我的 JSON 对象(可以有很多)中的所有createdAt和updatedAt字段:
"createdAt":"2015-05-12T21:14:51Z"
Run Code Online (Sandbox Code Playgroud)
或者
"updatedAt":"2015-05-12T21:14:51Z"
Run Code Online (Sandbox Code Playgroud)
每个文件中有 NUMEROUS 个(其中 100 个)对象,字段的值不同。我需要经过和更换每一个createdAt和updatedAt使用新的格式对象。日期无所谓。我可以让它们成为任何东西。
我可以手动完成这项工作,但实际上我需要一两天的时间才能完成全职工作(我知道,我尝试做一个文件,1/2 小时后我放弃了,时间太长了) .
如何以编程方式执行此操作?
正则表达式?塞德?还有什么?
最后一点:我只需要这样做一次。在那之后,我就不需要再这样做了。
感谢您提供任何提示!
JSON 示例:(想象一下真正的 30,000 行!):)
{ "products": [
{
"displayOrder": 3,
"product": {
"foo": "bar",
"createdAt": {
"year": 2014,
"month": 11,
"dayOfMonth": 24,
"hourOfDay": …Run Code Online (Sandbox Code Playgroud) 我正在使用带有以下数据和范围代码的HTML选择(如下所示).我无法从范围数据的"选择"列表中选择初始值.有人可以指出我搞砸了什么吗?
$scope.hourOptions = [
{ value:'0', key: '12AM'},
{ value:'3600', key: '1AM'},
{ value:'7200', key: '2AM'},
{ value:'10800', key: '3AM'},
{ value:'14400', key: '4AM'},
{ value:'18000', key: '5AM'},
{ value:'21600', key: '6AM'},
{ value:'25200', key: '7AM'},
{ value:'28800', key: '8AM'},
{ value:'32400', key: '9AM'},
{ value:'36000', key: '10AM'},
{ value:'39600', key: '11AM'},
{ value:'43200', key: '12AM'},
{ value:'46800', key: '1PM'},
{ value:'50400', key: '2PM'},
{ value:'54000', key: '3PM'},
{ value:'57600', key: '4PM'},
{ value:'61200', key: '5PM'},
{ value:'64800', key: '6PM'}, …Run Code Online (Sandbox Code Playgroud) 首先,我正在使用兼容性库,这是我得到的错误:
11-22 19:57:09.111: ERROR/AndroidRuntime(28867): FATAL EXCEPTION: main
java.lang.NullPointerException
at android.support.v4.app.BackStackRecord.bumpBackStackNesting(BackStackRecord.java:518)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:563)
at
android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1379)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:419)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
仅当应用程序处于PORTRAIT方向并且我尝试使用FragmentTransaction隐藏另外两个片段并显示一个新片段时,才会出现此错误.当用户按下应用程序中的按钮时,将执行此代码.
这是抛出的代码(一旦调用提交并执行,就会抛出上面的错误).
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.addToBackStack(null);
transaction.hide(fragmentA);
transaction.hide(fragmentB);
transaction.replace(R.id.fragment_container, new PurchaseFragment());
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会这样?
android ×3
javascript ×2
json ×2
mongoose ×2
node.js ×2
activerecord ×1
aidl ×1
angularjs ×1
barcode ×1
caching ×1
expresso ×1
gson ×1
mercurial ×1
regex ×1
replace ×1
rspec ×1
rspec-rails ×1
rspec2 ×1
rx-java ×1
sed ×1
tortoisehg ×1
unit-testing ×1
vows ×1