我不能手动或自动填充新保存的对象上的创建者字段...我能找到的唯一方法是重新查询我已经拥有的我不想做的对象.
这是设置:
var userSchema = new mongoose.Schema({
name: String,
});
var User = db.model('User', userSchema);
var bookSchema = new mongoose.Schema({
_creator: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
description: String,
});
var Book = db.model('Book', bookSchema);
Run Code Online (Sandbox Code Playgroud)
这是我拉我的头发的地方
var user = new User();
user.save(function(err) {
var book = new Book({
_creator: user,
});
book.save(function(err){
console.log(book._creator); // is just an object id
book._creator = user; // still only attaches the object id due to Mongoose magic
console.log(book._creator); // Again: is just an object …Run Code Online (Sandbox Code Playgroud) 我有Category模特:
Category:
...
articles: [{type:ObjectId, ref:'Article'}]
Run Code Online (Sandbox Code Playgroud)
文章模型包含ref Account model.
Article:
...
account: {type:ObjectId, ref:'Account'}
Run Code Online (Sandbox Code Playgroud)
因此,填充的articlesCategory模型将是:
{ //category
articles: //this field is populated
[ { account: 52386c14fbb3e9ef28000001, // I want this field to be populated
date: Fri Sep 20 2013 00:00:00 GMT+0400 (MSK),
title: 'Article 1' } ],
title: 'Category 1' }
Run Code Online (Sandbox Code Playgroud)
问题是:如何填充填充字段的子字段(帐户)([articles])?我现在就是这样做的:
globals.models.Category
.find
issue : req.params.id
null
sort:
order: 1
.populate("articles") # this populates only article field, article.account is not populated
.exec (err, categories) …Run Code Online (Sandbox Code Playgroud) 我自己有一个关于Sails.js版本0.10-rc5中的关联的问题.我一直在构建一个应用程序,其中多个模型相互关联,我已到达我需要以某种方式嵌套关联的点.
有三个部分:
首先是博客文章,这是由用户编写的.在博客文章中,我想显示关联用户的信息,如用户名.现在,这里一切正常.直到下一步:我正在尝试显示与帖子相关的评论.
注释是一个单独的模型,称为Comment.每个人还有一个与之相关的作者(用户).我可以轻松地显示评论列表,但是当我想显示与评论相关的用户信息时,我无法弄清楚如何使用用户的信息填充评论.
在我的控制器中,我试图做这样的事情:
Post
.findOne(req.param('id'))
.populate('user')
.populate('comments') // I want to populate this comment with .populate('user') or something
.exec(function(err, post) {
// Handle errors & render view etc.
});
Run Code Online (Sandbox Code Playgroud)
在我的Post''show'动作中,我试图检索这样的信息(简化):
<ul>
<%- _.each(post.comments, function(comment) { %>
<li>
<%= comment.user.name %>
<%= comment.description %>
</li>
<% }); %>
</ul>
Run Code Online (Sandbox Code Playgroud)
但是,comment.user.name将是未定义的.如果我尝试访问'user'属性,例如comment.user,它将显示它的ID.这告诉我,当我将评论与其他模型关联时,它不会自动将用户的信息填充到评论中.
任何理想的人都能妥善解决这个问题:)?
提前致谢!
PS
为了澄清,这就是我基本上在不同模型中建立关联的方式:
// User.js
posts: {
collection: 'post'
},
hours: {
collection: 'hour'
},
comments: {
collection: 'comment'
}
// Post.js
user: {
model: 'user'
},
comments: …Run Code Online (Sandbox Code Playgroud) 我使用c#并进行单元测试和集成测试通常我需要根据属性自动填充字段.
假设我们将测试是否可以编写并将用户数据写回数据库.
是否有任何框架自动填充用户的测试数据并检查两个对象是否具有相同的值?
示例代码可能是这样的
User user = new User();
AutoPopulator.Populate(user);
user.Save();
Run Code Online (Sandbox Code Playgroud) 我需要一个MySQL表来保存2011-01-01和2011-12-31之间的所有日期.我创建了一个包含一个列名为"_date"的表,类型为DATE.
使用什么查询可以用所有期望的日期填充表格(而不必手动输入)?
即使我知道它不理想 - 我需要以编程方式填充listView(无论出于何种原因).
我在标记中声明我的列:
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="Value" DisplayMemberBinding="{Binding Path=Value}"/>
</GridView>
</ListView.View>
Run Code Online (Sandbox Code Playgroud)
我在代码中添加这样的项目(它显然是在循环中):
MyData data = getDataItem(index); //< -- whatever
ListViewItem item = new ListViewItem();
item.DataContext = data;
this.myListView.Items.Add(item);
Run Code Online (Sandbox Code Playgroud)
MyData定义为:
public class MyData
{
public string Name { get; set; }
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
正在添加项目(我可以看到行),但我看不到任何内容.
任何人都有任何线索?
任何帮助赞赏!
如何使用Visual Studio数据库项目使用静态的源控制数据填充数据库?我已经尝试了以下所有三种策略,发现每一种策略都比上一次更好.我使用但不完全满意策略3.你有另一种选择吗?
将插入脚本放在"数据生成计划"文件夹中.引用"Script.PostDeployment.sql"文件中的脚本以将其包含在部署过程中.
- 优点:直截了当
- 缺点:slooooooow
- 缺点:后续部署必须首先删除静态数据或检查数据是否存在=>效率低下
使用最方便的方法(例如,可能是SSMS编辑表功能)第一次将数据插入数据库.使用bcp命令行实用程序提取该数据,以创建一堆数据文件并将其添加到项目中.创建"Scripts.PostDeployment.sql"文件中引用的脚本,该脚本为每个数据文件执行"批量插入"语句.
- 优点:比插入语句快得多
- 优点:可以利用SSMS编辑表功能
- 缺点:每个批量插入语句都需要数据文件的完全限定文件名,所以如果数据文件位于我的机器上"C" :\ Projects\Dev\Source\foo.dat"然后远程开发机器也必须在那个位置或批量插入语句失败
- 缺点:必须删除现有的静态数据,然后在后续部署中执行批量插入语句
在部署期间创建临时表以保存静态数据,并使用sql merge语句将这些表与目标表同步.见任的这些博客文章.
- 优点:似乎sql merge对问题有完美的语义
- 缺点:这个策略的逻辑在每个文件中重复 - 缺点:表定义作为sql合并文件中的临时表重复
是否有更优越的替代战略?我放弃了策略1,因为它太慢了.由于完全限定的文件名问题,我不喜欢策略2.我对战略3感到满意但并不激动.是否有最好的做法?
我有一个HTML表单,我通过ajax保存到数据库.要获取键/值对的查询字符串,我使用了非常方便的serialize函数,如下所示:
var myData = $("form#form_id").serialize();
$.ajax({
url: "my_save_script.php",
type: "post",
data: myData,
success: function(msg){
alert(msg);
}
});
Run Code Online (Sandbox Code Playgroud)
现在我想加载一个空白表单,并使用数据库中的数据重新填充它,该数据从ajax调用作为JSON字符串传递.我已经能够获得具有正确键/值对的Javascript对象,如下所示:
data = $.parseJSON(data);
data = data[0];
Run Code Online (Sandbox Code Playgroud)
重新填充表单最简单,最优雅的方法是什么?
请记住,表单的输入元素是文本,选择,复选框和广播.输入元素的名称与数据库列的名称相同,并且是上述data对象中键/值对的键.这就是为什么这个serialize功能对我来说效果很好
我想知道如何使用数据填充TableView ...我看到的所有示例都创建了一个包含列和所有内容的TableView,并将其添加到场景中.全部都是在java代码中完成的.
我想知道的:如果我在JavaFx场景构建器中设计我的"表单".在那里定义所有表和列.如何访问它以从java填充它?或者,如果有人可以指出我正确的教程请.
我在JavaFx Scene Builder中定义了我的表单 - 只有一个包含3列的TableView
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="288.0" prefWidth="293.0" xmlns:fx="http://javafx.com/fxml">
<children>
<TableView fx:id="tableView" layoutX="35.0" layoutY="28.0" prefHeight="200.0" prefWidth="227.0">
<columns>
<TableColumn prefWidth="75.0" text="UserId" fx:id="UserId" />
<TableColumn prefWidth="75.0" text="UserName" fx:id="UserName" />
<TableColumn prefWidth="75.0" text="Active" fx:id="Active" />
</columns>
</TableView>
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
我的数据在我的Java代码中的ResultSet中.
ResultSet rs = c.createStatement().executeQuery(SQL);
Run Code Online (Sandbox Code Playgroud)
我需要填充TableView.
谢谢
在stackoverflow上似乎有很多关于这个主题的Q/A,但我似乎无法在任何地方找到确切的答案.
是)我有的:
我有公司和人员模型:
var mongoose = require('mongoose');
var PersonSchema = new mongoose.Schema{
name: String,
lastname: String};
// company has a reference to Person
var CompanySchema = new mongoose.Schema{
name: String,
founder: {type:Schema.ObjectId, ref:Person}};
Run Code Online (Sandbox Code Playgroud)
我需要的:
找到所有姓氏为"Robertson"的人成立的公司
我尝试了什么:
Company.find({'founder.id': 'Robertson'}, function(err, companies){
console.log(companies); // getting an empty array
});
Run Code Online (Sandbox Code Playgroud)
然后我认为Person不是嵌入式的,而是引用的,所以我使用populate来填充创始人Person,然后尝试使用find和'Robertson'lastname
// 1. retrieve all companies
// 2. populate their founders
// 3. find 'Robertson' lastname in populated Companies
Company.find({}).populate('founder')
.find({'founder.lastname': 'Robertson'})
.exec(function(err, companies) {
console.log(companies); // getting an empty array again
}); …Run Code Online (Sandbox Code Playgroud)