草庐IT

javascript - 带有子文档的复杂架构

coder 2023-11-01 原文

更新:

目前我有这个架构:

var Schema = new schema ({
    name: String,
    type: { type: String },
    date: { type: Date },
    descrip: String,
});

但是我使用这个模式来生成 2 个文档:

THE A TYPE ({
    name: 'A',
    type: 'TYPE_B',
    date: { type: Date },
    descrip: 'DESC_A',
});

THE B TYPE ({
    name: 'B',
    type: 'TYPE_B',
    date: { type: Date },
    descrip: 'DESC_B',
});

名称、类型和描述在 A 和 B 类型中始终相同,唯一改变的是日期字段,所以我在想,我该如何改进它?我如何在同一架构中插入多个日期,而不是始终创建具有相同名称、类型和描述值的文档?

所以我正在尝试在其他模式中创建一个模式,但我不知道这是否可能,是吗?

我是这样尝试的:

var mainSchema = new schema ({
    name: String,
    type: { type: String },
    date: [ dateSchema ],
    descrip: String,
});

var dateSchema = new Schema ({
    date: {
     type: Date
    }  
});

我想要的是创建两个 mainSchema,类型 a 和类型 b,并在其中插入日期...

我这样做对吗?我怎样才能实现我的目标?

我正在寻找具有良好解释的完整答案,这就是赏金的原因。我不接受 +/- 答案。

最佳答案

要创建包含多个日期的记录,您可以使用日期数组。

var mainSchema = new schema ({
name: String,
type: { type: String },
dates: [Date],
descrip: String,
});

文档如下

THE A TYPE ({
name: 'A',
type: 'TYPE_B',
dates: ["2014-01-22T14:56:59.301Z","2015-01-22T14:56:59.301Z"],
descrip: 'DESC_A',
});

THE B TYPE ({
name: 'B',
type: 'TYPE_B',
dates: ["2015-01-22T14:56:59.301Z","2014-01-22T14:56:59.301Z"],
descrip: 'DESC_B',
});

引用:http://mongoosejs.com/docs/schematypes.html

对于保存您可以使用的文档。

exports.save = function(req,res){
var test = new newSchema;  // new object for newSchema domain.
test.name= req.body.name;
test.type= req.body.type;
test.desc= req.body.desc;
if(req.body.date){
    req.body.forEach(function(date){  // For every element of date from client.
        test.date.push(date)  // This pushes each and every date given from the client into the date array.
    })
}
test.save(function (saveErr, saved) {  // Saves the new document into db.
    if (saveErr) {
        console.log(saveErr)
        return;
    }
    res.status(HttpStatus.OK).json(saved);
});
};

对于更新,您可以使用 like。

exports.update = function(req,res){  
newSchema.findOne({name: 'B'},function(err,test){  // Finds a record with name:'B' and stores in test the same can be done for name:'A'.
    if(test){
        if(req.body.date){
            req.body.forEach(function(date){
                test.date.push(date)  // pushes dates into existing test document (update).
            })
        }
        test.save(function (saveErr, saved) {  // Saves (updates) the document.
            if (saveErr) {
                console.log(saveErr)
                return;
            }
            res.status(HttpStatus.OK).json(saved);
        });
    }
});
};

希望这对您有所帮助。

关于javascript - 带有子文档的复杂架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27716398/

有关javascript - 带有子文档的复杂架构的更多相关文章

  1. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  2. ruby - 使用 AES 的 Rails 加密,过于复杂 - 2

    我在加密来self正在使用的第三方供应商的值时遇到问题。他们的指令如下:1)Converttheencryptionpasswordtoabytearray.2)Convertthevaluetobeencryptedtoabytearray.3)Theentirelengthofthearrayisinsertedasthefirstfourbytesontothefrontofthefirstblockoftheresultantbytearraybeforeencryption.4)EncryptthevalueusingAESwith:1.256-bitkeysize,2.25

  3. Ruby:如何使用带有散列的 'send' 方法调用方法? - 2

    假设我有一个类A,里面有一些方法。假设stringmethodName是这些方法之一,我已经知道我想给它什么参数。它们在散列中{'param1'=>value1,'param2'=>value2}所以我有:params={'param1'=>value1,'param2'=>value2}a=A.new()a.send(methodName,value1,value2)#callmethodnamewithbothparams我希望能够通过传递我的哈希以某种方式调用该方法。这可能吗? 最佳答案 确保methodName是一个符号,而

  4. ruby - 测试一个复杂的方法 - 2

    我正在开发西洋跳棋实现,其中有许多易于测试的方法,但我不确定如何测试我的主要#play_game方法。我的大多数方法都可以很容易地确定输入和输出,因此也很容易测试,但这种方法是多方面的,实际上并没有容易辨别的输出。这是代码:defplay_gameputs@gui.introwhile(game_over?==false)message=nil@gui.render_board(@board)@gui.move_requestplayer_input=getscoordinates=UserInput.translate_move_request_to_coordinates(play

  5. ruby-on-rails - 带有 Pry 的 Rails 控制台 - 2

    当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

  6. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  7. 带有 attr_accessor 的类上的 Ruby instance_eval - 2

    我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到

  8. ruby - 是否有用于复杂比较的漂亮语法? - 2

    方法应返回-1,0或1分别表示“小于”、“等于”和“大于”。对于某些类型的可排序对象,通常将排序顺序基于多个属性。以下是可行的,但我认为它看起来很笨拙:classLeagueStatsattr_accessor:points,:goal_diffdefinitializepts,gd@points=pts@goal_diff=gdenddefothercompare_pts=pointsother.pointsreturncompare_ptsunlesscompare_pts==0goal_diffother.goal_diffendend尝试一下:[LeagueStats.new(

  9. ruby - Ruby 和 Ruby on Rails 中的三层架构 - 2

    我是一名决定学习Ruby和RubyonRails的ASP.NETMVC开发人员。我已经有所了解并在RoR上创建了一个网站。在ASP.NETMVC上开发,我一直使用三层架构:数据层、业务层和UI(或表示)层。尝试在RubyonRails应用程序中使用这种方法,我发现没有关于它的信息(或者也许我只是找不到它?)。也许有人可以建议我如何在RubyonRails上创建或使用三层架构?附言我使用ruby​​1.9.3和RubyonRails3.2.3。 最佳答案 我建议在制作RoR应用程序时遵循RubyonRails(RoR)风格。Rails

  10. ruby-on-rails - Rails 渲染带有驼峰命名法的 json 对象 - 2

    我在一个简单的RailsAPI中有以下Controller代码:classApi::V1::AccountsControllerehead:not_foundendendend问题在于,生成的json具有以下格式:{id:2,name:'Simpleaccount',cash_flows:[{id:1,amount:34.3,description:'simpledescription'},{id:2,amount:1.12,description:'otherdescription'}]}我需要我生成的json是camelCase('cashFlows'而不是'cash_flows'

随机推荐