我无法弄清楚如何在导航栏中的链接旁边获取徽章并使其正确排列.
<ul class="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Link</a><span class="badge badge-important">4</span></li>
Run Code Online (Sandbox Code Playgroud)
这是我的问题的JSFiddle示例:http: //jsfiddle.net/pHRc9/3/
我在mongoose中有一个Person对象,那个person对象有多个东西(每个东西都有一个唯一的ID).
person1 = {
things[{id: 1, name: 'one'},{id:2, name: 'two'}]
}
person2 = {
things[{id: 3, name: 'three'},{id:4, name: 'four'}]
}
Run Code Online (Sandbox Code Playgroud)
然后查询:
Person.findOne({'things.id': 2},{'things.$': 1}, function(err, person) { ...
Run Code Online (Sandbox Code Playgroud)
这很好但我正在搜索所有Person对象(可能有很多).在这种情况下,我知道我需要的人的ID和一个'东西'的唯一ID.通过id获取Person可能要快得多:
Person.findById(personId, function(err, person) { ...
Run Code Online (Sandbox Code Playgroud)
然后循环遍历所有事情以找到正确的:
var thing
person.things.forEach(function(t) {
if (t.id == thingId) {
thing = t;
}
});
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果有更好的方法.我可以通过id查询Person集合来获取一个Person然后过滤掉我正在寻找的东西(没有丑陋的循环)?
任何人都有一个迁移模块,用于使用mongoose插件迁移mongodb数据?
我目前正在使用"迁移"模块,除了我需要在每个向上/向下创建/销毁我的连接这一事实之外,它工作得很好.
IE
// Setup mongoose
var mongoose = require('mongoose')
, Role = require('../models/role')
, User = require('../models/user');
exports.up = function(next) {
// get a brand new connection for this patch.
mongoose.connect('mongodb://localhost/sagedb');
var adminUser = {
username: 'admin',
password: 'admin'
};
User.createUser(adminUser, function(err, user) {
if (err) {
mongoose.disconnect(); // Make sure to close connection
return next(err);
}
mongoose.disconnect(next); // Make sure to close connection
});
};
exports.down = function(next) {
mongoose.connect('mongodb://localhost/sagedb'); // new connection for down
User.getUserByUsername('admin', function(err, user) …Run Code Online (Sandbox Code Playgroud) 我尝试的第一件事是使用FetchedResultsController来解决我的问题.这是FRC的非典型用法,因为我没有更新TableView,我只是用它来确定实体是否在改变,所以我知道何时保存到服务器:
self.fetchedResultsController = [Document MR_fetchAllSortedBy:@"timestamp"
ascending:NO
withPredicate:[NSPredicate predicateWithFormat:@"report.remoteId != nil && dirty == YES"]
groupBy:nil
delegate:self
inContext:_managedObjectContext];
Run Code Online (Sandbox Code Playgroud)
这里的问题是FRC在关系实体更改时不会收到更新.IE如果report.remoteId从nil变为非nil,我将看不到更新,因为FRC仅侦听Document实体上的更改.此处概述的限制:http://www.mlsite.net/blog/?p = 825和此处更改托管对象属性不会触发NSFetchedResultsController更新表视图
不确定我是否真的想要实施解决方法,因为我使用FRC来做它本来不应该做的事情.我不认为苹果会修复这个限制,所以我真的不想将一个圆形钉子撞到一个方孔来解决我的问题.
几个选项
在保存实体后在代码中触发通知,然后在其他地方侦听.我唯一不喜欢的是程序员要做到这一点并保持最新状态,即如果有人出现并将实体保存在另一个地方,他们必须记得发出通知.
要么
侦听保存到默认MOC.这就是我真正想做的事情.像这样的东西:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(handleDataModelChange:)
name:NSManagedObjectContextObjectsDidChangeNotification
object:[NSManagedObjectContext MR_defaultContext]];
- (void)handleDataModelChange:(NSNotification *)note {
NSSet *updatedObjects = [[note userInfo] objectForKey:NSUpdatedObjectsKey];
NSSet *deletedObjects = [[note userInfo] objectForKey:NSDeletedObjectsKey];
NSSet *insertedObjects = [[note userInfo] objectForKey:NSInsertedObjectsKey];
// Do something in response to this
}
Run Code Online (Sandbox Code Playgroud)
这是我的两难困境.这将听取默认MOC上的所有更改.我真的只关心几个实体的变化.所以,是的,我可以过滤掉每次通话中我关心的实体.但是,我有一个案例,我在其中保存了大量我不关心的其他实体.这意味着NSManagedObjectContextObjectsDidChangeNotification将触发一个吨,大部分时间我都不在乎.我不想通过不断收到此通知并花时间过滤掉我不关心的所有实体来减慢我的应用程序.
有没有办法监听特定的实体保存?在CoreData或MagicalRecord中?
如果答案是否定的,是否有一个很好的选择来听取特定实体(及其关系)的变化?
我需要生成一个用于访问 api 的安全令牌。用户将进行身份验证,成功身份验证后,我将需要生成一个令牌。
重要提示:我确实需要能够随时撤销用户对 api 的访问权限。
选项1:
我可以生成一个随机字符串并将其用作令牌。将令牌和用户存储在数据库中。当用户传递令牌时,我会检查数据库中的令牌,如果它存在就去......
这使我能够通过删除用户令牌来撤销访问权限。如果他们尝试重新登录并且令牌消失了,他们将无法访问。我还可以根据时间使数据库中的令牌过期。
我正在使用 nodejs 并且已经看到了这一点:
require('crypto').randomBytes(48, function(ex, buf) {
var token = buf.toString('hex');
});
Run Code Online (Sandbox Code Playgroud)
如果有人猜不到我生成的令牌,那真的安全吗?
选项 2:
使用 jwt 之类的东西。在 auth 上生成一个带有用户 ID 的 jwt。当用户在请求上传递该 jwt 时,我确保 jwt 是有效的,如果是这样,则获取用户 ID 并顺利进行。这似乎更安全,因为 jwt 可以防止篡改。
问题是撤销对 api 的访问。我可以将所有 jwts(直到它们过期)存储在数据库中,根据请求验证 jwt 并确保它在我的数据库中。如果我想撤销,我可以将它从数据库中删除。这里的缺点是我现在有验证 jwt 并查找它以确保它在我的数据库中的开销。
是否有使用 jwt 撤销访问的好方法?
我正在为我的项目使用 Android 应用程序启动、刀柄和空间。我在尝试将工作排队时遇到错误:
com.test E/WM-WorkerFactory: Could not instantiate com.test.RefreshWorker
java.lang.NoSuchMethodException: com.test.RefreshWorker.<init> [class android.content.Context, class androidx.work.WorkerParameters]
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
<meta-data
android:name="com.test.RefreshInitializer"
android:value="androidx.startup" />
</provider>
Run Code Online (Sandbox Code Playgroud)
我的应用程序类:
@HiltAndroidApp
class TestApplication: Application(), Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
}
Run Code Online (Sandbox Code Playgroud)
我的工人:
@HiltWorker
class RefreshWorker @AssistedInject constructor(
@Assisted context: Context,
@Assisted params: WorkerParameters,
private val repository: Repository,
) : CoroutineWorker(context, params) {
override suspend fun doWork(): Result = …Run Code Online (Sandbox Code Playgroud) 我试图从数组(子文档)中提取/删除值.
示例文档:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
Run Code Online (Sandbox Code Playgroud)
当我从mongo中取出它时,我有记忆中的文档.我在尝试:
var left = object.items.pull({id: 24});
console.log(left)
Run Code Online (Sandbox Code Playgroud)
输出:
[{
id: 23,
name: 'item name 23',
_id: 5150a1199fac0e6910000045
},{
id: 24,
name: 'item name 24',
_id: 5150a1199fac0e6910000002
}]
Run Code Online (Sandbox Code Playgroud)
所以看起来我已经有问题了.从拉取调用返回的数组应该是拉出后数组中剩下的数据.不知道为什么它没有从项目数组中拉出来.这只支持通过ObjectId ant而不是用户定义的字段吗?
我叫保存:
object.save();
Run Code Online (Sandbox Code Playgroud)
Mongoose将此记录为查询:
Mongoose: mycollection.update({ _id: ObjectId("5150901ac345824a07000002"), __v: 3 })
{ '$inc': { __v: 1 }, '$pull':
{ attachments: { _id: { '$in': [ ObjectId("5150c64d63773efb1f000002") ] …Run Code Online (Sandbox Code Playgroud) db.users.find();
Run Code Online (Sandbox Code Playgroud)
会给我返回一系列用户:
[{
_id: 123
name: bob
},{
_id: 456
name: tom
}]
Run Code Online (Sandbox Code Playgroud)
我需要通过id将用户映射到另一个集合,所以我想从mongo返回一个对象,其中的键是_id,值是用户doc。
即
users = {
123: {_id: 123, name: bob},
456: {_id, 456, name:tom}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以直接从该对象访问用户,而不必迭代数组来查找特定用户。
id = 123;
user = users[id];
Run Code Online (Sandbox Code Playgroud) 我正在尝试扩展传单Marker类以创建位置标记.我的位置标记包含一个代表用户位置的内圈和一个代表用户位置精确度的外圈.我正在扩展课程,因为我想展示很多用户位置,我不想为每个用户创建2个标记.
我有问题让弹出窗口工作.两件事情:
这是一个插件,蓝色标记是弹出的标准圆,绿色是我的扩展标记,弹出不起作用. http://plnkr.co/edit/5tz538?p=preview
码:
L.LocationMarker = L.Marker.extend({
initialize: function (latlng, options) {
L.Marker.prototype.initialize.call(this, latlng);
this._accuracyCircle = L.circle(latlng, 0, {
color: options.color,
fillColor: options.color,
fillOpacity: 0.15,
weight: 2,
opacity: 0.5
});
this._locationMarker = L.circleMarker(latlng, {
color: options.color,
fillColor: options.color,
fillOpacity: 0.7,
weight: 2,
opacity: 0.9,
radius: 5
});
this._location = L.layerGroup([this._accuracyCircle, this._locationMarker]);
},
addTo: function (map) {
map.addLayer(this._location);
return this;
},
onAdd: function (map) {
this._map = map;
map.addLayer(this._location);
},
onRemove: function (map) {
map.removeLayer(this._location);
},
getLatLng: function() …Run Code Online (Sandbox Code Playgroud) 我正在尝试在固定顶部导航栏上方添加横幅。我环顾四周并了解了一些有关如何执行此操作的基本概念,但我的示例有点复杂,而且我有点迷茫。
用户可以在我的页面顶部添加自定义横幅。如果发生这种情况,我需要将所有内容(包括固定导航栏)向下推至横幅的高度(例如 20 像素)。
我创建了一个可以应用于 nav 元素的类:
.top-banner-nav {
top: 20px;
}
Run Code Online (Sandbox Code Playgroud)
导航栏:
<nav class="navbar navbar-default navbar-fixed-top" ng-class="{'top-banner-nav': banner == true}">
Run Code Online (Sandbox Code Playgroud)
如果有横幅,那么将静态导航栏向下推 20px 效果很好。但是我有问题。
当您有一个像这样的静态导航栏时,您必须向正文添加顶部填充以将正文内容推送到横幅下方。现在突然间我需要将正文内容向下推 70 像素。不确定是否有一种很好的方法可以动态地实现这一点。
我在最顶部导航栏的正下方有另一个静态导航栏。当我将最顶部的导航栏向下移动 20 像素时,我也需要将另一个导航栏向下移动 20 像素。不幸的是,这个下部导航也与 top: 50px 一起固定,以将其放置在上部导航栏的正下方。
我这里有一个 plunker 来演示这个问题。而且我真的不确定从这里去哪里。可能不得不弄乱javascript中的东西,但我想尽量避免这种情况,以避免在页面加载时出现跳跃。
mongodb ×4
mongoose ×4
node.js ×4
android ×1
android-room ×1
angularjs ×1
bearer-token ×1
core-data ×1
css ×1
dagger-hilt ×1
ios ×1
jwt ×1
leaflet ×1
migrate ×1
objective-c ×1
security ×1