Как получить “дружественную” версию ОС Имя?

OK. Я нашел решение, которое работает, хотя я не знаю, является ли оно оптимальным для случаев, когда я рисую большое количество документов модели из БД. Но, в любом случае, вот оно.

Мне нужно использовать почтовый хук для init в схеме фрагмента. Другими словами, EmployeeSnippet должен выглядеть так:

const EmployeeSnippetSchema = new Schema({
  firstName: String,
  lastName: String,
  address: {
    city: {
      type: Schema.Types.ObjectId,
      ref: 'City',
      autopopulate: { select: 'cityName state' }
    }
  },
  residenceCity: String,
  residenceState: String
});

Я просто добавляю следующий хук:

[ 1111]

EmployeeSnippetSchema.post('init', function(doc) {
  if (doc.address && doc.address.city) {
    doc.residenceCity = doc.address.city.cityName;
    doc.residenceState = doc.address.state;
  }
  
  delete doc.address;
});

И это работает, хотя, как я сказал ранее, я не знаю, является ли это оптимизированным решением, когда мы получаем большое количество документы, но это лучшее, что я мог придумать.

P.S. Я только что понял, что использовал «autopopulate», который не является функцией, которая поставляется из коробки с мангустом. На самом деле это плагин команды Mongoose: http://plugins.mongoosejs.io/plugins/autopopulate

59
задан A-Sharabiani 14 June 2016 в 19:07
поделиться

4 ответа

Вы можете использовать WMI для получения названия продукта ("Microsoft® Windows Server® 2008 Enterprise"):

using System.Management;
var name = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().Cast<ManagementObject>()
                      select x.GetPropertyValue("Caption")).FirstOrDefault();
return name != null ? name.ToString() : "Unknown";
68
ответ дан 24 November 2019 в 18:10
поделиться

Почему бы не использовать Environment.OSVersion ? Это также скажет Вам, какая работа это - Windows, Mac OS X, Unix, и т.д. Чтобы узнать, работаете ли Вы в 64 битах или 32 битах, используйте IntPtr.Size - это возвратит 4 байта для 32 битов и 8 байтов для 64 битов.

21
ответ дан configurator 24 November 2019 в 18:10
поделиться

Одной вещью остерегаться является эта информация, обычно локализуется и сообщит по-другому в зависимости от языка ОС.

можно получить много информации от , WMI ищет класс

Win32_OperatingSystem
3
ответ дан JoshBerke 24 November 2019 в 18:10
поделиться

Обратите внимание, что вопрос об архитектуре процессора сложен:

делают Вы имеете в виду (выше numers, требуют, чтобы более низкие числа были верны):

  1. ЦП способен для обработки 64 битов (в том смысле, что это поддерживает AMD/intel x64 или Itanium)
  2. , Операционная система составляет 64 бита
    • , GPR и указатели составляют 64 бита, т.е. XP 64, Vista 64, выпуск сервера на 64 бита или ОС на 64 бита для моно
  3. в настоящее время выполнение , процесс является процессом на 64 бита (не выполняющийся под Wow64, например)

, если Вы рады, что все 3 должны быть верными затем

IntPtr.Size == 8

, Указывает, что все три верны

2
ответ дан ShuggyCoUk 24 November 2019 в 18:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: