我需要编写一个应用程序,我可以使用spring-data和mongodb进行复杂的查询.我一直在使用MongoRepository开始,但在复杂的查询中苦苦寻找示例或实际理解语法.
我在谈论这样的查询:
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
List<User> findByEmailOrLastName(String email, String lastName);
}
Run Code Online (Sandbox Code Playgroud)
或者使用基于JSON的查询,我尝试通过反复试验,因为我没有正确的语法.即使在阅读了mongodb文档(由于语法错误而导致的非工作示例).
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
@Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]")
List<User> findByEmailOrFirstnameOrLastnameLike(String searchText);
}
Run Code Online (Sandbox Code Playgroud)
阅读完所有文档后,似乎mongoTemplate记录得更好MongoRepository.我指的是以下文档:
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/
你能告诉我什么更方便,更强大吗?mongoTemplate还是MongoRepository?两者是否同样成熟,或者其中一个缺少比另一个更多的功能?
我尝试将大图像上传/流式传输到REST控制器,该控制器接收文件并将其存储到数据库中.
@Controller
@RequestMapping("/api/member/picture")
public class MemberPictureResourceController {
@RequestMapping(value = "", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void addMemberPictureResource(@RequestBody InputStream image) {
// Process and Store image in database
}
}
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试实现的非工作示例(当然,或者我猜这样,InputStream不起作用).我想通过@RequestBody流式传输/读取图像.
我到处搜索,但找不到如何实现这一目标的好例子.大多数人似乎只询问如何通过表单上传图像,但不使用REST/RestTemplate来执行此操作.有没有人可以帮我这个?
我很感谢任何正确方向的暗示.
亲切的问候,克里斯
解决方案
在这里,我尝试在Dirk和Gigadot的输入之后发布适合我的解决方案.目前我认为两种解决方案都值得一看.起初我尝试在Dirk的帮助下发布一个工作示例,然后我将尝试在Gigadot的帮助下创建一个.我会将Dirks的答案标记为正确答案,因为我一直在明确询问如何通过@RequestBody上传文件.但我也很想测试Gigadot的解决方案,因为它可能更容易,更常见.
在下面的示例中,我将文件存储在MongoDB GridFS中.
解决方案1 - Dirks推荐后的示例
控制器(在评论中使用curl命令进行测试):
/**
*
* @author charms
* curl -v -H "Content-Type:image/jpeg" -X PUT --data-binary @star.jpg http://localhost:8080/api/cardprovider/logo/12345
*/
@Controller
@RequestMapping("/api/cardprovider/logo/{cardprovider_id}")
public class CardproviderLogoResourceController {
@Resource(name = "cardproviderLogoService")
private CardproviderLogoService cardproviderLogoService;
@RequestMapping(value = "", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void addCardproviderLogo(@PathVariable("cardprovider_id") …Run Code Online (Sandbox Code Playgroud) 我正在尝试根据参考4.4自定义实现实现自定义查询:
Spring Data的MongoTemplate和MongoRepository有什么区别?
我这样做是因为我需要使用mongoTemplate进行特殊查询.
我得到的错误是一个PropertyReferenceException.所以spring-data似乎试图自动生成我不想要的查询.我想使用自己的自定义查询.
org.springframework.data.mapping.PropertyReferenceException: No property search found for type com.eerra.core.common.dto.User
Run Code Online (Sandbox Code Playgroud)
这里也描述了这个问题,但解决方案对我来说似乎不起作用:
http://forum.springsource.org/showthread.php?114454-Custom-repository-functionality
题
如果没有spring-data尝试自动生成查询,如何实现自定义查询接口和实现?
组态
弹簧配置
弹簧data.xml中
<!-- Spring Data MongoDB repository support -->
<mongo:repositories base-package="com.eerra.*.common.service" />
Run Code Online (Sandbox Code Playgroud)
存储库类和接口位于以下包中:
com.eerra.core.common.service.UserRepositoryInterface.java com.eerra.core.common.service.UserRepoistoryCustom.java(interface)com.eerra.core.common.service.UserRepositoryCustomImpl.java(implementation)
UserRepositoryCustom.java
public interface UserRepositoryCustom {
List<User> searchAllUsers();
}
Run Code Online (Sandbox Code Playgroud)
UserRepositoryCustomImpl.java
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public List<User> searchAllUsers() {
return mongoTemplate.findAll(User.class);
}
}
Run Code Online (Sandbox Code Playgroud)
UserRepositoryInterface.java
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String>, UserRepositoryCustom {
User findByEmail(String email);
List<User> findByEmailLike(String email);
List<User> findByEmailOrLastName(String …Run Code Online (Sandbox Code Playgroud) 我需要使用 Flutter 在 Firestore 中使用嵌套数组更新文档。
所以我需要将完整的文档放入一个 Map 中,重新排序“sections”数组中的映射,然后将数据存储回文档中。
然而,我不熟悉如何将快照 (DocumentSnapshot) 的数据放入地图。
下面是一个对我尝试实现的目标不起作用的示例:
final Map<String, dynamic> doc = snapshot.data as Map<String, dynamic>;
Run Code Online (Sandbox Code Playgroud)
“snapshot.data”包含文档的值。文档的结构如下所示:
{
name: "Course 1"
sections: [
{name: "Section 1"},
{name: "Section 2"}
]
}
Run Code Online (Sandbox Code Playgroud)
重新排序部分数组中的地图后,我需要将数据保存回文档中。
这里功能齐全。相关代码在“onDragFinish”中。
// Build editable list with draggable list tiles and swipe to delete
List<Widget> buildListViewEdit() {
final course = db.collection("school").document("3kRHuyk20UggHwm4wrUI")
.collection("course").document("74UsE9x7Bsgnjz8zKozv").snapshots();
return [
StreamBuilder(
stream: course,
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text("Loading...");
return Expanded(
child: DragAndDropList( …Run Code Online (Sandbox Code Playgroud) 我正在尝试为电子邮件字段实现表单验证.验证应该做到以下:
我希望显示第一条消息,如果该字段为空,如果电子邮件无效并且出现第三条消息,则会显示第二条消息,如果找到电子邮件地址,因此一次不唯一.
如果我只尝试使用"required"属性,但是一旦我添加了我的email-available指令属性,它就不再检查电子邮件的格式,并且email-available指令与所需属性一起执行.两个消息都会弹出,但我只希望用户一次看到一条消息.
我正在使用angularjs 1.1.3.
谁能告诉我,我可能做错了什么?
HTML
<div id="user_mod" class="mod_form" ng-show="userModScreenIsVisible">
<form name="mod_user" novalidate>
<input type="email" name="email" ng-model="user.email" placeholder="E-Mail" required email-available/>
<div class="user-help" ng-show="mod_user.email.$dirty && mod_user.email.$invalid">Invalid:
<span ng-show="mod_user.email.$error.required">Please enter your email.</span>
<span ng-show="mod_user.email.$error.email">This is not a valid email.</span>
<span ng-show="mod_user.email.$error.emailAvailable">This email address is already taken.</span>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
指示
directive('emailAvailable', function($http) { // available
return {
require: 'ngModel',
link: function(scope, elem, attr, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
ctrl.$setValidity('emailAvailable', false);
if(viewValue !== "" && typeof viewValue !== "undefined") { …Run Code Online (Sandbox Code Playgroud) 很抱歉发布这个相当大的帖子。但我看不出有办法让它变小。责备CORS :)
版本:
我想要达到的目标
使用基本授权标头的跨源请求:
问题:
问题:
更新
我已经创建了jsfiddles来说明我的问题,因为问题不明确.
首先,我认为我无法停用表单字段的验证,但我了解到这可以使用ng-required指令完成.
http://jsfiddle.net/charms/YhVfN/23/
我的实际问题是密码字段未设置为原始状态.清除所有其他表单域,但不清除密码字段.
要测试此行为,您可以:
然后你会看到密码仍然设置.它不会被$ setPristine方法清除.清除所有其他表单字段.
http://jsfiddle.net/charms/eP7T8/61/
上一个(过时的问题)
有人知道如何停用已禁用字段的验证吗?我正在使用angularjs 1.1.3.
当我创建新用户时,我想验证所有字段,包含密码字段.但是当我编辑用户时,我希望密码字段保持不活动状态并且不会被验证,除非用户通过复选框激活字段.
我目前的问题是,如果我将密码字段设置为ng-disabled = true,则验证仍在进行中.我认为ng-required = false可能会有所帮助,但事实并非如此.
我将密码字段设置为ng-disabled = true和ng-required = false.
<input type="password" name="password" ng-model="password" placeholder="Password" ng-disabled="true" ng-required="false" required/>
Run Code Online (Sandbox Code Playgroud)
我将密码确认字段设置为ng-disabled = true和ng-required = false.
<input type="password" name="passwordConfirm" ng-model="passwordConfirm" placeholder="Confirm Password" ng-disabled="true" ng-required="false" required field-equal="password"/>
Run Code Online (Sandbox Code Playgroud)
但仍然需要验证所需的和字段相等的指令.如何阻止对已停用的字段进行验证?
在我的完整代码下面.
HTML:
<div id="user_list" class="listview_list">
<div id="user_row" class="listview_row" ng-repeat="u in users">
<div id="user_username" class="listview_column"><span class="listview_mainfield">{{u.email}}</span></div>
<div id="user_firstname" class="listview_column">{{u.firstName}}</div>
<div id="user_lastname" class="listview_column">{{u.lastName}}</div>
<button class="listview_row_button" ng-click="deleteUser(u.id, $index)">Delete</button>
<button class="listview_row_button" ng-click="showEditScreen(u.id, $index)">Edit</button> …Run Code Online (Sandbox Code Playgroud) 目前我正在学习 Resocoder 教程(DDD 课程)。在本课程中,有一个名为i_auth_facade.dart 的抽象类,其中包含一个函数 getSignedInUser。
我已经模拟了该类并尝试从 getSignedInUser 方法中获取用户的有效选项,但结果始终为 null。
另外,当我尝试执行AuthBloc 的authCheckRequested方法(然后在后台调用 getSignedInUser 方法)时,我返回 null。
我肯定在 Mockito 上遇到了一些错误,因为存根似乎不起作用。
有人能指出我为什么不返回 optionOf(User) 而是 null 的正确方向吗?
import 'package:bloc_test/bloc_test.dart';
import 'package:dartz/dartz.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:teach_mob_student/application/auth/auth_bloc.dart';
import 'package:teach_mob_student/domain/auth/i_auth_facade.dart';
import 'package:teach_mob_student/domain/auth/user.dart';
import 'package:teach_mob_student/domain/auth/value_objects.dart';
import 'package:teach_mob_student/domain/core/value_objects.dart';
class MockIAuthFacade extends Mock implements IAuthFacade {}
void main() {
final tValidUser = User(
id: UniqueId(),
name: StringSingleLine('Test User'),
emailAddress: EmailAddress('test@user.com'));
test('Should return valid option of user', () async {
// This is to check, …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中实现针对Jersey REST / Json的JUnit测试。
我的问题是我没有从Grizzly找回404。但是路径是正确的,并且可以在普通Webcontainer上使用Curl进行测试。
我正在使用GWTP(没有maven)。我正在手动实现属性-> Java Build Path。我正在使用以下版本:
根据Jersey文档提供了所有库:http : //jersey.java.net/nonav/documentation/latest/user-guide.html-第7.5章在Maven外部运行测试。
以下是堆栈跟踪:
INFO: GRIZZLY0001: Starting Grizzly Framework 1.9.45 - 01.07.12 12:11
01.07.2012 10:11:20 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.acolsolutions.loyaltycard.resources
01.07.2012 10:11:20 com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class com.acolsolutions.loyaltycard.resources.HelloResource
class com.acolsolutions.loyaltycard.resources.CardResource
01.07.2012 10:11:20 com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider …Run Code Online (Sandbox Code Playgroud) spring ×4
angularjs ×3
flutter ×2
java ×2
rest ×2
spring-data ×2
cors ×1
flutter-test ×1
grizzly ×1
jersey ×1
json ×1
mongodb ×1
spring-mvc ×1